如何使tkinter按钮与脚本交互?

时间:2019-05-28 19:39:12

标签: python python-3.x user-interface tkinter

我是编码和尝试解决这一问题的新手,但我做不到,而且我似乎也找不到在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值的按钮。有人可以请您解释如何执行此操作,或可以将对这方面的工作做得很好的视频/指南链接到新手吗?

谢谢

1 个答案:

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