我有两个按钮,分别是开始和停止,当我单击开始按钮时,我要经历一会儿,但是当我想要停止它时, Tkinter窗口被阻止,由于整个窗口被阻止,我无法点击停止按钮。
下面是我的代码:
s = 1
def Start():
while(s==1):
#do something
def Stop():
global s
s = 0
btn_Start= Button(root, text = 'Start',width=9, height=2, command = Start).place(x=2,y=2)
btn_Stop = Button(root, text = 'Stop',width=9, height=2, command = Stop).place(x=2,y=42)
有人知道我该怎么停吗?
编辑:-------- 还是一样的错误
答案 0 :(得分:1)
如果要在活动窗口中同时运行该功能,则必须使用线程方法将其连接。
该线程方法创建一个线程,该线程创建您的程序的单独执行。
这是您的解决方案,
import tkinter
import threading
from tkinter import *
root = Tk()
s = 1
def Start():
while(s==1):
print(s)
#do something
def thread():
global t
t = threading.Thread(target = Start)
t.start()
def Stop():
global s
s = 0
t.join()
print("Stopped")
btn_Start= Button(root, text = 'Start',width=9, height=2, command = thread).place(x=2,y=2)
btn_Stop = Button(root, text = 'Stop',width=9, height=2, command = Stop).place(x=2,y=42)
在上述程序中,Start()
被分配为线程。因此,当按下Start
按钮时,命令的thread()
将通过执行Start()
函数来创建新线程。
当Stop()
函数被调用时,t.join()
将把该线程包括在您的Stop()
函数执行中。
在这里您可以找到线程模块文档, https://docs.python.org/3/library/threading.html#module-threading