Gust Posted September 14, 2006 at 01:32 PM Report #50461 Posted September 14, 2006 at 01:32 PM Eu queria começar a dar uns toques no Tkinter e escolhi um criador de chaves do euromilhoes. Este é o codigo: import random from Tkinter import * from sys import exit def sair(): exit() def main(): #Escolhe os numeros e organiza-os numeros = range(1, 51) estrelas = range(1, 11) while len(numeros) > 5: numero = random.choice(numeros) numeros.remove(numero) while len(estrelas) > 2: estrela = random.choice(estrelas) estrelas.remove(estrela) numeros.sort() estrelas.sort() labela(numeros, estrelas) def labela(numeros, estrelas): numero1 = Label(principal, text=numeros[0], relief=RAISED).pack() numero2 = Label(principal, text=numeros[1], relief=RAISED).pack() numero3 = Label(principal, text=numeros[2], relief=RAISED).pack() numero4 = Label(principal, text=numeros[3], relief=RAISED).pack() numero5 = Label(principal, text=numeros[4], relief=RAISED).pack() estrela1 = Label(principal, text=estrelas[0], relief=RAISED).pack() estrela2 = Label(principal, text=estrelas[1], relief=RAISED).pack() if __name__ == "__main__": #Interface grafica principal = Tk() Button(principal, text="Chave", command=main()).pack() Button(principal, text="Sair", command=sair()).pack() principal.mainloop() O problema é que sempre que eu corro o prgm ele excuta as funções uma vez. Os botões funcionam bem e tudo, mas ele termina logo na primeira execução. Não liguem à apresentação depois melhoro-a. "Labela" foi à falta de melhor. Obrigado pela atenção. "A computer program it's a world, the programmer its God"
Triton Posted September 14, 2006 at 02:39 PM Report #50470 Posted September 14, 2006 at 02:39 PM Eu nunca usei o Tkinter (uso o wxPython) mas pelo que vejo o erro está no quit. Estive a pesquisar e a aprender os básicos de Tkinter, já consegui criar uma versão que funciona bem comigo. Atenção que se correres a aplicação apartir do IDLE quando carregas no Sair a aplicação não fecha totalmente. import random from Tkinter import * def main(): #Escolhe os numeros e organiza-os numeros = range(1, 51) estrelas = range(1, 11) while len(numeros) > 5: numero = random.choice(numeros) numeros.remove(numero) while len(estrelas) > 2: estrela = random.choice(estrelas) estrelas.remove(estrela) numeros.sort() estrelas.sort() labela(numeros, estrelas) def labela(numeros, estrelas): numero1 = Label(F, text=numeros[0], relief=RAISED) numero1.pack() numero2 = Label(F, text=numeros[1], relief=RAISED) numero2.pack() numero3 = Label(F, text=numeros[2], relief=RAISED) numero3.pack() numero4 = Label(F, text=numeros[3], relief=RAISED) numero4.pack() numero5 = Label(F, text=numeros[4], relief=RAISED) numero5.pack() estrela1 = Label(F, text=estrelas[0], relief=RAISED) estrela1.pack() estrela2 = Label(F, text=estrelas[1], relief=RAISED) estrela2.pack() if __name__ == "__main__": #Interface grafica principal = Tk() F = Frame(principal) F.pack() butao1 = Button(F, text="Chave", command=main) butao1.pack() butao2 = Button(F, text="Sair", command=F.quit) butao2.pack() principal.mainloop() <3 life
Gust Posted September 14, 2006 at 02:49 PM Author Report #50478 Posted September 14, 2006 at 02:49 PM O meu erro (principal) estava em por o .pack() na criação do objecto. Isto tornava-o "NoneType" Muito obrigado. "A computer program it's a world, the programmer its God"
Triton Posted September 14, 2006 at 02:53 PM Report #50481 Posted September 14, 2006 at 02:53 PM Sim, eu reparei nisso mas esqueci-me de te dizer. 😛 Tkinter nem é assim tão mau, mas é feio! 🙂 <3 life
Gust Posted September 14, 2006 at 04:08 PM Author Report #50496 Posted September 14, 2006 at 04:08 PM Sabem como é que eu limpo a frame? Tipo apagar a chave antiga e deixar a nova, eu tentei sobre por uma à outra mas como o tamanho é variavel fica mal. E como é que executo sem ter de abrir a "Python (cammand line)"? "A computer program it's a world, the programmer its God"
Gust Posted September 14, 2006 at 07:28 PM Author Report #50549 Posted September 14, 2006 at 07:28 PM Ja resolivi o primeiro problema. Agora é só saber como não abrir a "Python (cammand line)". Obrigado. "A computer program it's a world, the programmer its God"
Triton Posted September 14, 2006 at 11:38 PM Report #50591 Posted September 14, 2006 at 11:38 PM Podes fazer double-click no ficheiro. 😛 Depois deixa a solução para o teu problema, pode ser que ajude alguém! 🙂 <3 life
Gust Posted September 15, 2006 at 01:27 PM Author Report #50663 Posted September 15, 2006 at 01:27 PM O primeiro problema: -Em vez do pack usei o grid e dei instruções para a label preencher a coluna toda O segundo e eu expliquie-me mal é que quando eu carrega 2 vezes no ficheiro o pc corre o python.exe primeiro e só depois o meu prgm. "A computer program it's a world, the programmer its God"
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now