Jump to content

Recommended Posts

Posted

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"

Posted

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

Posted

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"

Posted

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"

Posted

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"

Posted

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"

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.