我试图做的是在按下"开始"按钮后启动一个函数,并能够在它循环时通过按下带有布尔变量和 if 语句的 Stop 按钮来停止它。我不知道如何让它工作。
from tkinter import *
def listen():
if running==True:
print("running")
def startCommand():
global running
running=True
def stopCommand():
global running
running=False
print("stop")
running=True
root = Tk()
root.geometry("200x100")
startButton=Button(root, text="Start", command=startCommand)
startButton.pack()
exitButton=Button(root, text="Stop", command=stopCommand)
exitButton.pack()
root.after(100, listen)
root.mainloop()
这是一个简单的修复,.after
调度一个函数只运行一次(在设定的毫秒数之后):
def listen():
if running:
print("running")
root.after(100, listen)
因此,如果您希望函数循环,您也可以重新安排函数在函数本身中再次运行。
顺便说一句,if variable == True:
与if variable:
相同(如果variable
是其他对象,它也会将计算为 True),if variable == False
与if not variable:
相同(如果变量是空字符串 (""
) 或整数0
或None
或False
,if not variable:
也会被执行)
另外:
我强烈建议在导入某些内容时不要使用通配符(*
),您应该导入所需的内容,例如from module import Class1, func_1, var_2
等等或导入整个模块:import module
然后你也可以使用别名:import module as md
或类似的东西,关键是不要导入所有内容,除非你真的知道你在做什么;名称冲突是问题所在。
我强烈建议遵循PEP 8 - Python Code风格指南。函数和变量名应该在snake_case
中,类名应该在CapitalCase
中。如果它用作关键字参数的一部分(func(arg='value')
),则=
周围没有空格,但如果用于分配值(variable = 'some value'
),则=
周围有空格。在运算符周围留出空间(+-/
等:value = x + y
(这里除外value += x + y
))。在函数和类声明周围有两个空行。