2016-04-05 12 views
1

私はPythonを初めて使いました。私はTkinterについていくつかのことを読んできました。それは私が持っているこのコードに問題があると言いました。私はこのプログラムを使って、コンピュータが1から10の間の乱数を選び、その数を推測しなければなりません。はい、本当にシンプルです。間違った試行や正しい試行の後に新しいintが生成されないので、クリックしたときに新しい乱数を生成するボタンを作りたいと思っています。私は 'クラス'のものでいくつかのソリューションを見たが、私はまだそれに精通していないが、それは私の問題のための最良の解決策なら、よく、私は見なければならない。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

用に別のボタンを持つ必要性を否定するあなたはちょうど 'RANDOM_NUMBER = random.randint(1を移動させたくなかったので、これは、ユーザーが何かを入力するたびに起こります10) 'を' retrieve_input'関数に追加しますか? – TigerhawkT3

+0

@ TigerhawkT3はい、私はできましたが、これについてもっと知るためにボタンを作ってみたかったのです。ボタンを削除してrandom_numberを関数に移動する方が簡単です。 – Aguxez

答えて

0

に格納したい値はあなたが本当になどの新しい乱数を生成するためのボタンを必要としないでくださいユーザーが答えを入力したときにそれを行うことができます。ボタンは、入力ボックスをクリアするだけでゲームを再開できます。したがって、ユーザーがReturnキーを押すとすぐに、その時点で乱数が生成され、ロジックはその答えが新しい乱数であるかどうかをチェックします。

それは数世代

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

あなたはサブにそれを置く方が良いでしょう、あなたのコード内のいくつかの場所で乱数を生成することができるように欠けているので、私はあなたがいつでも、そのサブを呼び出すコードの一部をrestructerう新しい乱数を返し、値を返します。

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

あなたがサブルーチンをcalliingているとき、あなたはそれが続い= nameofsubroutine

num = randomnumgen() 
+0

...または 'random_number = lambda:random.randint(1、10)'の最小限の変更(および変数として使用する代わりに 'random_number()'として) –

+0

私はそれを考えなかった、それはおそらくもっと良いだろう – ryanmoir

関連する問題