我试图使一个'猜数字'游戏与Pyhon tkinter,但到目前为止,我还无法检索输入的用户。
按下b1
时,如何获得entry
中的输入?
我也想显示一个更低或更高的消息作为玩家的线索,但我不确定我所拥有的是否正确:
import time
import random
import decimal
import tkinter as tk
root = tk.Tk()
randomnum = float(decimal.Decimal(random.randrange(100,10000))/100)
guess = 0
def get(entry):
guess = entry.get()
return guess
def main():
b1 = tk.Button(root, text="Guess", command=get)
entry = tk.Entry()
b1.grid(column=1, row=0)
entry.grid(column=0, row=0)
root.mainloop()
print(guess)
if guess < randomnum:
l2 = tk.Label(root, text="Higher!")
l2.grid(column=0, row=2)
elif guess > randomnum:
l3 = tk.Label(root, text="Lower!")
l3.grid(column=0, row=2)
while guess != randomnum:
main()
l4 = tk.Label(root, text="Well guessed")
time.sleep(10)
4条答案
按热度按时间piah890a1#
您可以在
main
中定义get
,以便访问之前创建的entry
小部件,如下所示:xqkwcwgp2#
你乱序地组合了一行随机代码。例如,
root.mainloop()
应该只在设置代码后被调用一次,但你却在main()
的中间调用它,这样之后的任何东西都不会执行,直到Tk被删除。while guess != randomnum:
循环在事件驱动代码中没有位置。不管它是什么,它确实应该在前面加上一个注解:让我们采用一种更简单、更简洁的方法,我们不使用指向各种小部件的指针,而是使用它们的
textvariable
和command
属性来运行show,并在设置后忽略这些小部件,我们将使用StringVar
和IntVar
来处理输入和输出,我们将使用after()
特性,而不是使用会抛出事件的sleep()
:dgjrabp23#
这里是一个
tkinter
版本的数字猜谜游戏。未使用
while
或after
!程序检查非法输入(空字符串或单词)并报告错误信息。它还记录猜测数字所需的尝试次数,并用大红横幅报告成功。
我为小部件指定了更有意义的名称,并使用
pack
管理器而不是grid
。您可以使用按钮输入您的猜测或只需按回车键。
4dbbbstv4#
正确的猜测数书写方式。
get_number()
函数中用Python编写了一个数字猜谜游戏的小脚本。Label
,而不是复制。修改代码:
输入浮点数的输出:
猜测后的输出较高:
猜测后的输出较低:
你赢得的输出和圈数: