有没有办法阻止';特金特';s主回路';python中的线程?
我是GUI编程新手,我想在我的程序中创建一个简单的等待屏幕,我尝试过,这就是我想到的。问题是,即使进程func终止,进程func的等待屏幕也不会停止。有没有办法停止线程“t”,或者有更好的解决方案有没有办法阻止';特金特';s主回路';python中的线程?,python,multithreading,tkinter,Python,Multithreading,Tkinter,我是GUI编程新手,我想在我的程序中创建一个简单的等待屏幕,我尝试过,这就是我想到的。问题是,即使进程func终止,进程func的等待屏幕也不会停止。有没有办法停止线程“t”,或者有更好的解决方案 from threading import Thread from tkinter import * from tkinter.ttk import Progressbar from tkinter import ttk def func(): t = Thread(target = wai
from threading import Thread
from tkinter import *
from tkinter.ttk import Progressbar
from tkinter import ttk
def func():
t = Thread(target = waiting).start()
for i in range(1000):
print(i)
#myProgress.stop()
def waiting():
root = Tk()
root.geometry('400x250')
myProgress = ttk.Progressbar(root ,orient = HORIZONTAL, length = 200 , mode = 'determinate' )
myProgress.pack(pady = 50)
#myButton = Button(root , text = ' Button ' , command = func).pack()
myProgress.start(10)
root.mainloop()
func()
您不应该通过杀死线程或其他方式来“阻止”线程。它应该从函数本身停止,例如使用变量stop\u threads
。例如,如果var为True,那么让我们停止线程。代码:
import threading
import time
def run():
while True:
print('thread running')
global stop_threads
if stop_threads:
break
stop_threads = False
t1 = threading.Thread(target = run)
t1.start()
time.sleep(1)
stop_threads = True
t1.join()
print('thread killed')
您不应该通过杀死线程或其他方式来“阻止”线程。它应该从函数本身停止,例如使用变量stop\u threads
。例如,如果var为True,那么让我们停止线程。代码:
import threading
import time
def run():
while True:
print('thread running')
global stop_threads
if stop_threads:
break
stop_threads = False
t1 = threading.Thread(target = run)
t1.start()
time.sleep(1)
stop_threads = True
t1.join()
print('thread killed')
这回答了你的问题吗?您不应该在线程中运行
mainloop()
。@YeeHaw几乎所有答案都有一个函数线程,在该线程中,他们所需要做的就是使用布尔值或条件停止函数的循环。但是在Tkinter的主循环中,我没有找到一种方法来解决这个问题。@acw1668还有其他方法来解决这个问题吗???这是否回答了您的问题?您不应该在线程中运行mainloop()
。@YeeHaw几乎所有答案都有一个函数线程,在该线程中,他们所需要做的就是使用布尔值或条件停止函数的循环。但是在Tkinter的主循环中,我没有找到一种方法来解决这个问题。@acw1668还有其他方法来解决这个问题吗???