我是编码和尝试解决这一问题的新手,但我做不到,而且我似乎也找不到在youtube上显示此视频的任何视频。
基本上,我要执行的是运行循环,并能够单击按钮,它会在循环中更改变量。例如:
from tkinter import *
import time
root = Tk()
x = 0
def changeVariable():
x = x + 5
button1 = Button(root, text="add 5", command=changeVariable)
button1.pack()
while True:
root.mainloop()
while x > 0:
print("X is greater than 0")
x = x - 1
time.sleep(1)
else:
print("Please click the button")
time.sleep(1)
我已经尝试了各种各样的方法,但无法获得在while循环中更改X值的按钮。有人可以请您解释如何执行此操作,或可以将对这方面的工作做得很好的视频/指南链接到新手吗?
谢谢
答案 0 :(得分:1)
您不能在主循环后放置代码。您不需要root.mainloop
,因为您的代码中已经存在一个永久循环。您只需删除root.mainloop
,您的代码就可以使用。
编辑:另一个问题是x没有全局定义。在changeVariable
函数的开头,添加代码global x
。
最后一个问题是您使用time.sleep()
。 您不希望使用time.sleep
,因为在冻结所有内容时可以按下该按钮。有关修复,请参见编辑2。
编辑2:
您可以使用tkinter after
方法。 after
方法可以应用于任何tkinter对象。在这种情况下,我们会将其应用于root。这是基本语法:root.after(milliseconds, function_to_execute_after_wait)
。要执行的功能是可选的。对于您的情况,应该使用time.sleep(1)
而不是root.after(1000)
。 请确保在您的root.update()
之后添加root.after(1000)
。
您也可以使用+=
或-=
来更改变量。可以使用x = x + 5
代替x += 5
。您可以使用x = x - 1
代替x -= 1
。
最终密码:
from tkinter import *
root = Tk()
x = 0
def changeVariable():
global x
x += 5
button1 = Button(root, text="add 5", command=changeVariable)
button1.pack()
while True:
while x > 0:
print("X is greater than 0")
x -= 1
root.after(1000)
root.update()
else:
print("Please click the button")
root.after(1000)
root.update()