eu sou iniciante em python e estou criando um pequeno banco de dados usando SQlite para gerenciar cartas, aliado ao tkinter para criar uma GUI amigável. Mas eu estou com um problema, não consigo criar um bind ligando o evento clique do mouse para criar o Banco de dados.
from tkinter import * #Importando a biblioteca from Comandos import comandosMLB
class MagicLib(): def __init__(self,toplevel): #Seletor indica a caixa que seleciona a opção self.top1=Frame(toplevel) #self.top1 é a instancia de topo do seletor self.top1.pack() #formando o Pack do self.top1 #BOTÃO DO FRAME DE TOPO self.bot1=Button(self.top1,text='Criar Banco de dados') self.bot1['font']='Verdana' #self.bot1.pack() --->Pack é sempre o ultimo, pois junta tudo
#CRIANDO O EFEITO BIND PARA CRIAR O BANCO DE DADOS self.bot1.bind('<button-1',self.criarBD)#Chama o efeito criar BD self.bot1.pack(side=TOP)
#EXECUTANDO COMANDO DE EXIBIR A JANELA exibir=Tk() #A variavel exibir chama a função Tk() MagicLib(exibir) #O comando Tk() é aplico a classe exibir.mainloop() #O mainloop mantem a tela constante
------------------------ Classe para criar o banco de dados. Fica na pasta Comandos:
class Comandos: def criarBD(self): #CRIANDO A TABELA DO MAGICLIB import sqlite3 c=sqlite3.connect('BD_MLB.db') #Conecta/cria o banco de dados cursor=c.cursor()#cria o cursor (edita o BD) cursor.execute ('''CREATE TABLE bd_cartas( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, nome TEXT NOT NULL, cor TEXT NOT NULL, atq TEXT, hp TEXT, descr TEXT, hab TEXT, edc TEXT );''') c.close
Traceback (most recent call last): File "GUI.pyw", line 29, in <module> MagicLib(exibir) #O comando Tk() é aplico a classe File "GUI.pyw", line 19, in __init__ self.bot1.bind('<button-1',self.criarBD)#Chama o efeito criar BD File "C:\Python34\lib\tkinter\__init__.py", line 1088, in bind return self._bind(('bind', self._w), sequence, func, add) File "C:\Python34\lib\tkinter\__init__.py", line 1043, in _bind self.tk.call(what + (sequence, cmd)) _tkinter.TclError: bad event type or keysym "button" Pressione qualquer tecla para continuar. . .
Pergunta
wyohara
Bom dia a todos,
eu sou iniciante em python e estou criando um pequeno banco de dados usando SQlite para gerenciar cartas, aliado ao tkinter para criar uma GUI amigável. Mas eu estou com um problema, não consigo criar um bind ligando o evento clique do mouse para criar o Banco de dados.
from tkinter import * #Importando a biblioteca
from Comandos import comandosMLB
class MagicLib():
def __init__(self,toplevel): #Seletor indica a caixa que seleciona a opção
self.top1=Frame(toplevel) #self.top1 é a instancia de topo do seletor
self.top1.pack() #formando o Pack do self.top1
#BOTÃO DO FRAME DE TOPO
self.bot1=Button(self.top1,text='Criar Banco de dados')
self.bot1['font']='Verdana'
#self.bot1.pack() --->Pack é sempre o ultimo, pois junta tudo
#CRIANDO O EFEITO BIND PARA CRIAR O BANCO DE DADOS
self.bot1.bind('<button-1',self.criarBD)#Chama o efeito criar BD
self.bot1.pack(side=TOP)
def criarBD(self,event):
value=criarBD()
p=comandosMLB.Comandos()
p.criarBD()
#EXECUTANDO COMANDO DE EXIBIR A JANELA
exibir=Tk() #A variavel exibir chama a função Tk()
MagicLib(exibir) #O comando Tk() é aplico a classe
exibir.mainloop() #O mainloop mantem a tela constante
------------------------ Classe para criar o banco de dados. Fica na pasta Comandos:
class Comandos:
def criarBD(self):
#CRIANDO A TABELA DO MAGICLIB
import sqlite3
c=sqlite3.connect('BD_MLB.db') #Conecta/cria o banco de dados
cursor=c.cursor()#cria o cursor (edita o BD)
cursor.execute ('''CREATE TABLE bd_cartas(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
cor TEXT NOT NULL,
atq TEXT,
hp TEXT,
descr TEXT,
hab TEXT,
edc TEXT
);''')
c.close
-------------------------------------------------------
O erro que aparece é:
Traceback (most recent call last):
File "GUI.pyw", line 29, in <module>
MagicLib(exibir) #O comando Tk() é aplico a classe
File "GUI.pyw", line 19, in __init__
self.bot1.bind('<button-1',self.criarBD)#Chama o efeito criar BD
File "C:\Python34\lib\tkinter\__init__.py", line 1088, in bind
return self._bind(('bind', self._w), sequence, func, add)
File "C:\Python34\lib\tkinter\__init__.py", line 1043, in _bind
self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "button"
Pressione qualquer tecla para continuar. . .
Alguma ideia de como resolver? Grato.
Editado por wyoharaLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.