首页 > 解决方案 > 如何杀死运行 Tkinter 代码的线程?

问题描述

我正在尝试运行一个代码来检查蓝牙连接,如果该特定连接不存在,则会出现白屏。为此,我编写了 Tkinter 代码,我正在尝试使用多线程控制该白屏,但是当我杀死线程时,弹出窗口并没有消失。

# Python program using 
# traces to kill threads 

import sys, threading, time 
from tkinter import *
from tkinter import messagebox

class TraceThread(threading.Thread): 
    def __init__(self, *args, **keywords): 
        threading.Thread.__init__(self, *args, **keywords) 
        self.killed = False
    def start(self): 
        self._run = self.run 
        self.run = self.settrace_and_run
        threading.Thread.start(self) 
    def settrace_and_run(self): 
        sys.settrace(self.globaltrace) 
        self._run()
    def globaltrace(self, frame, event, arg): 
        return self.localtrace if event == 'call' else None
    def localtrace(self, frame, event, arg): 
        if self.killed and event == 'line': 
            raise SystemExit() 
        return self.localtrace 
def func(): 
    
    root=Tk()
    l1=Label(root,text="please wait connection",width=200,font='Helvetica 22 bold').place(x=-1000,y=400)
    root.overrideredirect(True)
    root.overrideredirect(False)
    root.attributes("-fullscreen", True)
    root.mainloop()

t = TraceThread(target=func) 
t.start() 
time.sleep(2.5) 
t.killed = True  # sends a SIGTERM
t = TraceThread(target=func) 
t.start() 
time.sleep(2.5) 
t.killed = True  # sends a SIGTERM

            

如果有人有办法杀死它,请分享谢谢

标签: pythonmultithreadingtkinter

解决方案


推荐阅读