Bom estou com um problema na hora de chamar um atributo em um outro arquivo, ou seja eu estou trabalhando com pacotes o primeiro pacote(arquivos diferentes) é o principal com nome de Gerenciador.py e nele tem esse código:
from Tkinter import *
from constantes import *
from BD import *
class main():
def __init__(self, principal):
self.frame1 = Frame(principal)
self.frame1.pack()
self.BCriar = Button(self.frame1, width = 10, command = self.criar, text = 'Criar')
self.BCriar.pack(side = LEFT, pady = '10px')
self.BGerenciar = Button(self.frame1, width = 10, command = self.gerenciar, text = 'Gerenciar')
self.BGerenciar.pack(side = LEFT, pady = '10px')
self.BDeletar = Button(self.frame1, width = 10, command = self.deletar, text = 'Deletar')
self.BDeletar.pack(side = LEFT, pady = '10px')
self.BAjuda = Button(self.frame1, width = 10, command = self.ajuda, text = 'Ajuda')
self.BAjuda.pack(side = LEFT, pady = '10px')
self.BSobre = Button(self.frame1, width = 10, command = self.sobre, text = 'Sobre')
self.BSobre.pack(side = LEFT, pady = '10px')
def criar(self):
self.BCriar.pack_forget()
self.BGerenciar.pack_forget()
self.BDeletar.pack_forget()
self.BAjuda.pack_forget()
self.BSobre.pack_forget()
criarBanco()
def gerenciar(self):
pass
def deletar(self):
pass
def ajuda(self):
pass
def sobre(self):
pass
principal = Tk()
main(principal
principal.geometry('800x600')
principal.resizable(False, False)
principal.title('Gerenciador De Cadastro')
principal.mainloop()
Quando clicar no botao criar ele entra na proxima página, que no caso é esse codigo com nome de BD.py(outro arquivo):
from Tkinter import *
from sqlite3 import *
from constantes import *
from Criacao import *
class criarBanco(object):
def __init__(self, principal):
#frames e empacotamento de frames
self.font = ('Arial', '14', 'bold')
self.font1 = ('Arial', '10', 'bold')
self.frame0 = Frame(principal)
self.frame0.pack(pady = padyFrame0)
self.frame1 = Frame(principal)
self.frame1.place()
self.frame1.pack()
self.frame1['bg'] = bgFrame1
self.frame5 = Frame(principal)
self.frame5.pack(pady = padyFrame0)
self.frame2 = Frame(principal)
self.frame2.place()
self.frame2.pack()
self.frame2['bg'] = bgFrame2
self.frameBotEnviar = Frame(principal)
self.frameBotEnviar.place()
self.frameBotEnviar.pack(pady = padyBotEnviar)
##Texto de Aviso de Marcado Ou no
self.nomeMarcado = Label(self.frame5, text = 'Nome = No ', font = self.font1)
self.nomeMarcado.pack(side = LEFT)
self.corMarcado = Label(self.frame5, text = ' Cor = No ', font = self.font1)
self.corMarcado.pack(side = LEFT)
self.cpfMarcado = Label(self.frame5, text = ' CPF = No ', font = self.font1)
self.cpfMarcado.pack(side = LEFT)
self.emailMarcado = Label(self.frame5, text = ' Email = No', font = self.font1)
self.emailMarcado.pack(side = LEFT)
#Variaveis CheckButton
self.Vnome = IntVar()
self.Vcor = IntVar()
self.Vcpf = IntVar()
self.Vemail = IntVar()
#################
self.L1 = Label(self.frame1, font = self.font, text = " Nome do Seu Banco de Dados ", bg = bgNomeDoBanco)
self.L1.pack()
self.LL1 = Label(self.frame1, bg = '#B5B5B5')
self.LL1.pack()
self.E1 = Entry(self.frame1, bd = 5, highlightcolor = '#1E90FF')
self.E1.pack()
self.L2 = Label(self.frame1, font = self.font, text = ' Digite a Senha do seu Banco de Dados ', bg = bgNomeDoBanco)
self.L2.pack()
self.E2 = Entry(self.frame1, show = '*', bd = 5, highlightcolor = '#1E90FF')
self.E2.pack()
self.L3 = Label(self.frame1, font = self.font, text = ' Confirme a Senha do seu Banco de Dados ', bg = bgNomeDoBanco)
self.L3.pack()
self.E3 = Entry(self.frame1, show = '*', bd = 5, highlightcolor = '#1E90FF')
self.E3.pack()
## CheckButtons
self.nome = Checkbutton(self.frame2, bg = bgCheckButton, font = self.font1, command = self.PegarValor, bd = 3, text = 'Nome', onvalue = 1, offvalue = 0, variable = self.Vnome)
self.nome.pack(side = LEFT)
self.cor = Checkbutton(self.frame2, bg = bgCheckButton, font = self.font1, command = self.PegarValor, bd = 3, text = 'Cor', onvalue = 1, offvalue = 0, variable = self.Vcor)
self.cor.pack(side = LEFT)
self.cpf = Checkbutton(self.frame2, bg = bgCheckButton, font = self.font1, command = self.PegarValor, bd = 3, text = 'CPF', onvalue = 1, offvalue = 0, variable = self.Vcpf)
self.cpf.pack(side = LEFT)
self.email = Checkbutton(self.frame2, bg = bgCheckButton, font = self.font1, command = self.PegarValor, bd = 3, text = 'Email', onvalue = 1, offvalue = 0, variable = self.Vemail)
self.email.pack(side = LEFT)
self.BotEnviar = Button(self.frameBotEnviar, command = self.enviaBanco, bg = '#CFCFCF', text = 'Enviar', font = self.font1, bd = 5)
self.BotEnviar.pack()
#################
def PegarValor(self):
v = [0,0,0,0]
if self.Vnome.get() == 1:
v[0] = 1
self.nomeMarcado['text'] = 'Nome = Sim '
else:
self.nomeMarcado['text'] = ' Nome = No '
if self.Vcor.get() == 1:
v[1] = 1
self.corMarcado['text'] = ' Cor = Sim '
else:
self.corMarcado['text'] = ' Cor = No '
if self.Vcpf.get() == 1:
v[2] = 1
self.cpfMarcado['text'] = ' CPF = Sim '
else:
self.cpfMarcado['text'] = ' CPF = No '
if self.Vemail.get() == 1:
v[3] = 1
self.emailMarcado['text'] = ' Email = Sim '
else:
self.emailMarcado['text'] = ' Email = No'
def enviaBanco(self):
if self.E2.get() == self.E3.get():
self.frame0.pack_forget()
self.frame1.pack_forget()
self.frame2.pack_forget()
self.frame5.pack_forget()
self.nomeMarcado.pack_forget()
self.corMarcado.pack_forget()
self.cpfMarcado.pack_forget()
self.emailMarcado.pack_forget()
self.frameBotEnviar.pack_forget()
self.BotEnviar.pack_forget()
self.L1.pack_forget()
self.LL1.pack_forget()
self.L2.pack_forget()
self.L3.pack_forget()
self.E1.pack_forget()
self.E2.pack_forget()
self.E3.pack_forget()
self.nome.pack_forget()
self.cor.pack_forget()
self.cpf.pack_forget()
self.email.pack_forget()
inicioBanco(principal)
else:
self.E2.delete(0, END)
self.E3.delete(0, END)
###############
Assim que voce colocar o nome e a senha e confirmar a senha e apertar enviar ele vai para esse arquivo com nome de Criacao.py
from Tkinter import *
class inicioBanco(object):
def __init__(self, principal):
self.frame11 = Frame(principal)
self.frame11.pack()
self.frame22 = Frame(principal)
self.frame22.pack()
usuarios = Label(self.frame11, text = 'Quantas Pessoas Voce Quer Cadastrar ?')
usuarios.pack()
self.entUsuarios = Entry(self.frame11, bd = 5, highlightcolor = '#1E90FF')
entUsuarios.pack()
Benviar = Button(self.frame22, text = 'Enviar', bd = 5)
Benviar.pack()
ai quando vai para o arquivo acima, da o seguinte erro:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1540, in __call__
return self.func(*args)
File "/home/giovanni/Área de Trabalho/Python/BD.py", line 122, in
enviaBanco
inicioBanco(principal)
NameError: global name 'principal' is not defined
Eu sei que é porque o nome principla não esta definido mas eu não consigo defini-lo pois principal é a instancia de Tk() então se eu colocar:
principal = Tk()
principal.geometry('800x600')
principal.resizable(False, False)
principal.title('Gerenciador De Cadastro')
principal.mainloop()
Ira ficar abrindo varias janela. Então Se entenderem me ajudem preciso muito. Lembrando CADA BLOCO É UM ARQUIVO COM NOME DIFERENTER O PRIMEIRO BOLBO É Gerenciador.py O SEGUNDO É BD.py E O TERCEIRO Criacao.py