通过Tkinter中的按钮调用变量

时间:2016-04-05 05:28:40

标签: python python-3.x tkinter

我是Python的新手,我一直在阅读有关Tkinter的一些内容,我发现它非常有趣;我说我的代码有问题。我有这个程序,让计算机选择1到10之间的随机数,你必须猜测数字;是的,非常简单;并且由于在错误的尝试或正确的尝试之后没有生成新的int我想创建一个按钮,当它被单击时生成一个新的随机数。我看到了一些解决方案' Class'但是我还没有真正熟悉它,但如果这是我问题的最佳解决方案,那么,我得看看。

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

2 个答案:

答案 0 :(得分:0)

我会重构你的一些代码,因为你希望能够在你的代码中的几个地方生成随机数,最好把它放在sub中,然后在你想要一个新的随机整数时调用那个sub。然后只返回值。

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

然后当您调用子例程时,执行您希望它存储的值then = nameofsubroutine

num = randomnumgen()

答案 1 :(得分: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()