Python 我试着用一个开始按钮开始一个while循环,然后用一个停止按钮停止它,但我找不到一个可行的方法
我试着用一个开始按钮开始一个while循环,然后用一个停止按钮停止它,但我找不到一个可行的方法 我在Python 3.7中使用tkinker 我试过了,但不起作用 有没有人给我一些修复或有用的提示Python 我试着用一个开始按钮开始一个while循环,然后用一个停止按钮停止它,但我找不到一个可行的方法,python,python-3.x,Python,Python 3.x,我试着用一个开始按钮开始一个while循环,然后用一个停止按钮停止它,但我找不到一个可行的方法 我在Python 3.7中使用tkinker 我试过了,但不起作用 有没有人给我一些修复或有用的提示 import time import sys from tkinter import * x = 1 fenster = Tk() fenster.title("test") fenster.geometry("600x300") def start(): start1() t
import time
import sys
from tkinter import *
x = 1
fenster = Tk()
fenster.title("test")
fenster.geometry("600x300")
def start():
start1()
time.sleep(5)
startini()
def start1():
x = 0
def startini():
if x < 1:
while x < 1:
print(x)
timer.sleep(5)
elif x > 0:
print("stop")
btstart = Button(fenster, text="Start", command=start)
btstart.pack()
def stop():
stop1()
time.sleep(5)
startini()
def stop1():
x = 1
btstop = Button(fenster, text="Stop", command=stop)
btstop.pack()
mainloop()
导入时间
导入系统
从tkinter进口*
x=1
芬斯特=Tk()
fenster.标题(“测试”)
芬斯特几何学(“600x300”)
def start():
start1()
时间。睡眠(5)
斯塔蒂尼()
def start1():
x=0
def startini():
如果x<1:
当x<1时:
打印(x)
计时器。睡眠(5)
elif x>0:
打印(“停止”)
btstart=按钮(fenster,text=“Start”,command=Start)
btstart.pack()
def stop():
stop1()
时间。睡眠(5)
斯塔蒂尼()
def stop1():
x=1
btstop=按钮(fenster,text=“Stop”,command=Stop)
btstop.pack()
mainloop()
您可能可以在之后使用获得所需的功能。您的问题是while循环会阻止程序继续:
import time
import sys
from tkinter import *
x = 1
fenster = Tk()
fenster.title("test")
fenster.geometry("600x300")
def start():
global x
x= 0
myloop()
def myloop():
if x < 1:
print(x)
fenster.after(2000,myloop)
elif x > 0:
print("stop")
def stop():
global x
x=1
btstart = Button(fenster, text="Start", command=start)
btstart.pack()
btstop = Button(fenster, text="Stop", command=stop)
btstop.pack()
mainloop()
导入时间
导入系统
从tkinter进口*
x=1
芬斯特=Tk()
fenster.标题(“测试”)
芬斯特几何学(“600x300”)
def start():
全球x
x=0
myloop()
def myloop():
如果x<1:
打印(x)
芬斯特之后(2000年,myloop)
elif x>0:
打印(“停止”)
def stop():
全球x
x=1
btstart=按钮(fenster,text=“Start”,command=Start)
btstart.pack()
btstop=按钮(fenster,text=“Stop”,command=Stop)
btstop.pack()
mainloop()
参考x
请看一下工作原理
在函数中,您显然希望引用在函数外部创建的x
。在这种情况下,您需要将其声明为全局。
例如:
def start1():
global x
x = 0
以及:
“行不通”有点通用。你应该更具体一些。当我在Tkinter回调回溯(最后一次调用)中按start0 Exception时:文件“C:\Python\lib\Tkinter_init_uu2;.py”,第1705行,在调用返回self.func(*args)文件“C:\cygwin64\home\hello.py”,第54行,在停止startini()文件“C:\cygwin64\home\hello.py”,第41行,在startini timer.sleep中(5) NameError:name'timer'未在您的代码中定义。计时器。sleep(5)
。应该是时间。sleep(5)
def startini():
global x
if x < 1:
while x < 1:
print(x)
time.sleep(5)
elif x > 0:
print("stop")
def start():
start1()
time.sleep(5)
thr = threading.Thread(target=startini)
thr.start()