我设置了一个tkinter按钮,用于将一个字符串发送到一个空列表,以便在计算机随机选择另一个字符串之间进行比较。一切工作正常,除了下面的代码处理以前的空列表之前,我可以单击tkinter按钮。我知道这是一种编程剪刀石头布游戏的怪异方法。发生的是,当单击“摇滚”按钮时,字符串“摇滚”被发送到一个空列表进行存储。然后,计算机从石头,纸和剪刀这三根弦中选择一根。将该字符串放入另一个空列表进行存储,然后立即与tkinter按钮中存储的第一个字符串进行比较。这将使我能够确定谁赢了或是否平局。
var daysTravel = 0
for people in peopleTravelling
{
daysTravel += people.daysOnTrip
}
答案 0 :(得分:1)
Button
不会等到您按下它。它仅定义显示窗口的mainloop()
应显示的窗口小部件。 Button
之后的所有代码都立即执行-甚至在您看到窗口之前。
您的问题是您为按钮分配了无用的lambda,但您应该分配功能来检查计算机的选择与用户的选择。
import tkinter as tk
import random
# --- functions ---
def check(user):
computer = random.choice(rps)
print(user, computer)
if user == computer:
print("Draw!")
else:
print("Nothing")
# --- main ---
rps = ["Rock", "Paper", "Scissors"]
root = tk.Tk()
button = tk.Button(root, text="Rock", command=lambda:check("Rock"))
button.pack()
button_2 = tk.Button(root, text="Paper", command=lambda:check("Paper"))
button_2.pack()
button_3 = tk.Button(root, text="Scissors", command=lambda:check("Scissors"))
button_3.pack()
root.mainloop() # start program