2016-04-05 20 views
1

'da bir düğmeyle bir değişkene çağrı Python'da yeniyim ve Tkinter hakkında bazı şeyler okuyorum ve bunu gerçekten ilginç buluyorum; Bu kodla ilgili bir sorunum olduğunu söyledi. Bilgisayarı 1 ile 10 arasında rastgele bir sayı seçen bu programa sahibim ve sayıyı tahmin etmelisiniz; evet, gerçekten basit; ve yanlış bir girişim veya doğru girişimden sonra yeni bir int üretilmediğinden, tıklandığında yeni bir rasgele sayı üreten bir düğme yapmak istiyorum. 'Sınıf' malzemeleriyle bazı çözümler gördüm ama henüz buna aşina değilim ama bu benim sorunum için en iyi çözümse, görmeliyim.Tkinter

from Tkinter import * 
import random 

root = Tk() 

random_number = random.randint(1, 10) 


def retrieve_input(event): 
    inp = float(number_space.get()) 
    if inp == random_number: 
     print("You got it!") 
    else: 
     print("That's not the number.") 
     print("The number was {}".format(random_number) + '.') 



number = Label(root, text="Guess a number between 1 and 10:") 
number.grid(row=0) 
number_space = Entry(root) 
number_space.grid(row=0, column=1) 
butt = Button(root, text="Generate a new random number") 
butt.grid(row=1, column=0) 


number_space.bind("<Return>", retrieve_input) 




root.mainloop() 
+0

Sadece 'RANDOM_NUMBER = random.randint taşımak istemiyordu için ayrı düğme olması ihtiyacını (1 negates 10) '' retrieve_input' işlevine? – TigerhawkT3

+0

@ TigerhawkT3 Evet, ama sadece bu konuda daha fazla şey öğrenmek için düğmeyi yapmak istedim. Sadece düğmeyi silmek ve random_number'i işleve taşımak daha kolay olurdu. – Aguxez

cevap

0

Gerçekten olarak yeni bir rastgele sayı oluşturmak için bir düğmeye gerek yok o zaman = nameofsubroutine saklanabilir istediğiniz değeri yapmak calliing edilir Kullanıcı cevabını girdiğinde bunu yapabilirsin. Düğme, giriş kutusunu temizleyerek oyunu yeniden başlatabilir. Böylece, kullanıcı Return'e ulaşır ulaşmaz, o noktada rastgele bir sayı üretilir ve sonra mantık, cevaplarının yeni bir rasgele sayı olup olmadığını kontrol eder. ,

Bu kullanıcı bir giriş yaptığında her zaman olur, bu yüzden sayı üretimi

from Tkinter import * 
import random 

root = Tk() 

def retrieve_input(event): 
    random_number = random.randint(1, 10) 
    inp = float(number_space.get()) 
    if inp == random_number: 
     print("You got it!") 
    else: 
     print("That's not the number.") 
     print("The number was {}".format(random_number) + '.') 

def startAgain(): 
    number_space.delete(0, 'end') 


number = Label(root, text="Guess a number between 1 and 10:") 
number.grid(row=0) 
number_space = Entry(root) 
number_space.grid(row=0, column=1) 
butt = Button(root, text="Generate a new random number", command=startAgain) 
butt.grid(row=1, column=0) 

number_space.bind("<Return>", retrieve_input) 

root.mainloop() 
0
bunu bir istediğiniz zaman bu denizaltıyı daha sonra alt koymak aramak daha iyi olurdu Kodunuzdaki çeşitli yerlerde rastgele sayı üretmek mümkün isteyen çünkü ben senin kodun bazı restructer olur

Yeni rastgele tam sayı ve sonra sadece değeri döndür. Sonra

def randomnumgen(): 
    random_number = random.randint(1, 10) 
    return random_number 

Eğer altyordamı bunu

num = randomnumgen() 
+0

... ya da "random_number = lambda: random.randint" (1, 10) 'un minimum değişimi (ve değişken olarak kullanmak yerine' random_number() olarak çağrılır). –

+0

Bunu düşünmedim, bu muhtemelen daha iyi olurdu – ryanmoir