Ir para conteúdo
Fórum Script Brasil
  • 0

Estou tentando associar um ítem de array a um objeto de Menu do Tkinter ...


Rhaone da Silva

Pergunta

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 por Rhaone da Silva
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

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]

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...