Rhaone da Silva Postado Julho 5, 2022 Denunciar Share Postado Julho 5, 2022 (editado) Olá pessoal ... o erro abaixo acontece porque estou tentando associar um ítem de array a um objeto de Menu do Tkinter ... Tem alguma forma de isso acontecer ou o Python não tem suporte para isso? ... obrigado ... Obs.: reduzi o código original para este fórum afim de facilitar o entendimento sendo que o mesmo foi testado também. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Já tentei ... exec ("%s = %s" % (objeto, Opcao [0])) objeto = locals()[Opcao [0]] objeto = globals()[Opcao [0]] objeto.add_cascade (label = objeto, menu = result) objeto.add_cascade (label = str (objeto), menu = objeto) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $ Traceback (most recent call last): File "/home/mint/PYTHON/TESTES/TESTES.PY", line 71, in <module> app = My_Root (root) File "/home/mint/PYTHON/TESTES/TESTES.PY", line 49, in __init__ objeto = globals()[Opcao [0]] KeyError: 'Opcao_0' ^C $ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #!/usr/bin/python from tkinter import * class My_Root (Frame): def __init__ (self, master): menubar = Menu (root) root.config (menu = menubar) self.master = master self.root = Toplevel (self.master) self.root.title ('Python - RHAONE') self.root.geometry ('300x200') self.button = Button (self.master, text = 'Exit', command = self.root.quit) self.button.place (x = 150, y = 100) Opcao = [] Opcao.append ('Opcao_0') Opcao.append ('Opcao_1') Opcao.append ('Opcao_2') Opcao_0 = Menu (menubar, tearoff = False) Opcao_0.add_command (label = ' Opcao_0_Ok', command = root.quit) objeto = globals()[Opcao [0]] objeto = Menu (menubar, tearoff = False) objeto.add_cascade (label = str (objeto), menu = str (objeto)) if __name__ == '__main__': root = Tk () app = My_Root (root) root.mainloop () Editado Julho 5, 2022 por Rhaone da Silva Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Julho 5, 2022 Denunciar Share Postado Julho 5, 2022 já fiz interfaces com tkinter, mas não tinha menus do tipo cabeçalho que fica no topo. sempre fiz usando botões, ou o notebook. mas pela experiencia que tive com tkinter, é que sim, você pode associar objetos ao array, pois o coletor de lixo vai eliminar o objeto se não tiver uma referencia. o erro no seu codigo esta no uso do globals se você fizer o print das chaves, vera que o array em questão não faz parte do escopo global print(globals().keys()) #outros testes que pode exclarecer print(array in globals()) print(objeto in globals()) a solução para o erro que você tem agora é chamar o objeto direto do array sem usar o globals objeto = Opcao [0] acredito que faltou o self no inicio self.Opcao = [] ### self.objeto = self.Opcao[0] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rhaone da Silva Postado Julho 12, 2022 Autor Denunciar Share Postado Julho 12, 2022 ArtEn ... GRATO PELA DICA POR HORA ... VOU AVERIGUAR ... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rhaone da Silva
Olá pessoal ... o erro abaixo acontece porque estou tentando associar um ítem de array a um objeto de Menu do Tkinter ...
Tem alguma forma de isso acontecer ou o Python não tem suporte para isso? ... obrigado ...
Obs.: reduzi o código original para este fórum afim de facilitar o entendimento sendo que o mesmo foi testado também.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Já tentei ...
exec ("%s = %s" % (objeto, Opcao [0]))
objeto = locals()[Opcao [0]]
objeto = globals()[Opcao [0]]
objeto.add_cascade (label = objeto, menu = result)
objeto.add_cascade (label = str (objeto), menu = objeto)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$ Traceback (most recent call last):
File "/home/mint/PYTHON/TESTES/TESTES.PY", line 71, in <module>
app = My_Root (root)
File "/home/mint/PYTHON/TESTES/TESTES.PY", line 49, in __init__
objeto = globals()[Opcao [0]]
KeyError: 'Opcao_0'
^C
$
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#!/usr/bin/python
from tkinter import *
class My_Root (Frame):
def __init__ (self, master):
menubar = Menu (root)
root.config (menu = menubar)
self.master = master
self.root = Toplevel (self.master)
self.root.title ('Python - RHAONE')
self.root.geometry ('300x200')
self.button = Button (self.master, text = 'Exit', command = self.root.quit)
self.button.place (x = 150, y = 100)
Opcao = []
Opcao.append ('Opcao_0')
Opcao.append ('Opcao_1')
Opcao.append ('Opcao_2')
Opcao_0 = Menu (menubar, tearoff = False)
Opcao_0.add_command (label = ' Opcao_0_Ok', command = root.quit)
objeto = globals()[Opcao [0]]
objeto = Menu (menubar, tearoff = False)
objeto.add_cascade (label = str (objeto), menu = str (objeto))
if __name__ == '__main__':
root = Tk ()
Editado por Rhaone da Silvaapp = My_Root (root)
root.mainloop ()
Link para o comentário
Compartilhar em outros sites
2 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.