Inufelipe Postado Fevereiro 10, 2007 Denunciar Share Postado Fevereiro 10, 2007 Ola galera do Script Brasil Forum,estou aprendendo tkinter,e fiz um botao, mais ele não funciona from Tkinter import * root = Tk() botao1 = Button(root,command="canvas.create_oval(10,10,100,100)",text="circulo") botao1.pack() canvas = Canvas(root,width=200,height=200) canvas.pack() root.mainloop() Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Fevereiro 10, 2007 Denunciar Share Postado Fevereiro 10, 2007 Para o parâmetro command você precisa passar uma função que será executada quando o botão for clicado:from Tkinter import * def BotaoClick(): canvas.create_oval(10,10,100,100) root = Tk() botao1 = Button(root, command=BotaoClick, text="circulo") botao1.pack() canvas = Canvas(root, width=200, height=200) canvas.pack() root.mainloop() Sendo que fica mais elegante (e inteligível) se você usar uma classe: from Tkinter import * class Janela(Frame): def __init__(self, app): self.botao1 = Button(app, command=self.ClickButton, text="circulo") self.botao1.pack() self.canvas = Canvas(app, width=200, height=200) self.canvas.pack() def ClickButton(self): self.canvas.create_oval(10, 10, 200, 200) aplicacao = Tk() j = Janela(aplicacao) aplicacao.mainloop() Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Fevereiro 10, 2007 Autor Denunciar Share Postado Fevereiro 10, 2007 Cara muito obrigado!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Fevereiro 10, 2007 Autor Denunciar Share Postado Fevereiro 10, 2007 E se eu quiser fazer que apareça na posição do mouse? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Fevereiro 10, 2007 Denunciar Share Postado Fevereiro 10, 2007 E se eu quiser fazer que apareça na posição do mouse?Aí já foge dos meus conhecimentos (básicos) de Tkinter. No caso, você deveria procurar algo como um evento MouseClick do form ou algo assim. Talvez você tenha sucesso buscando no Google.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Fevereiro 10, 2007 Autor Denunciar Share Postado Fevereiro 10, 2007 ok cara,eu vou tentar algo mail facil, from Tkinter import * class Nome(Frame): def __init__(self,master): self.frame = Frame(master) self.frame.pack() self.texto1 = Label(self.frame,text="Nome") self.texto1.pack() self.input = Entry(self.frame) self.input.pack() self.botao = Button(self.frame,text="Ok",command=self.printre) self.botao.pack() self.re = Text(master) self.re.pack() def printre(self): self.re.insert(INSERT,self.input.get()+"\n") root = Tk() nome = Nome(root) root.mainloop() Ele funciona bem,mais tem como fazer tudo(O label,O entry e O button) na mesma linha ?Falou Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Fevereiro 12, 2007 Denunciar Share Postado Fevereiro 12, 2007 Não sei se tem como fazer na mesma linha, mas você pode substituir... self.texto1 = Label(self.frame,text="Nome") self.texto1.pack() self.input = Entry(self.frame) self.input.pack() self.botao = Button(self.frame,text="Ok",command=self.printre) self.botao.pack() ... por: objetos = [['texto1', Label, {'text': 'Nome'}], ['input', Entry, {}], ['botao', Button, {'text': 'Ok', 'command': self.printre}]] for nome, classe, parametros in objetos: obj = classe(self.frame, parametros) setattr(self, nome, obj) obj.pack()Ficou quase a mesma quantidade de linhas, mas se você adicionar mais uns dois controles já vai ver a diferença. Sendo que também é mais "complicado" de entender se você não tiver um certo conhecimento de Python.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Inufelipe
Ola galera do Script Brasil Forum,
estou aprendendo tkinter,
e fiz um botao, mais ele não funciona
Link para o comentário
Compartilhar em outros sites
6 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.