Ir para o conteúdo
Gust

Tkinter

Mensagens Recomendadas

Gust    0
Gust

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triton    12
Triton

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()

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gust    0
Gust

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)"?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gust    0
Gust

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade