我聽說Python中的線程不容易處理,他們變得更加糾結於tkinter。線程和tkinter python 3
我有以下問題。我有兩個類,一個用於GUI,另一個用於無限過程。首先,我啓動GUI類,然後啓動無限過程的類。我希望當你關閉GUI時,它也完成了無限的過程,程序結束。
代碼的簡化版本如下:
import time, threading
from tkinter import *
from tkinter import messagebox
finish = False
class tkinterGUI(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global finish
#Main Window
self.mainWindow = Tk()
self.mainWindow.geometry("200x200")
self.mainWindow.title("My GUI Title")
#Label
lbCommand = Label(self.mainWindow, text="Hello world", font=("Courier New", 16)).place(x=20, y=20)
#Start
self.mainWindow.mainloop()
#When the GUI is closed we set finish to "True"
finish = True
class InfiniteProcess(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global finish
while not finish:
print("Infinite Loop")
time.sleep(3)
GUI = tkinterGUI()
GUI.start()
Process = InfiniteProcess()
Process.start()
當我點擊關閉按鈕(在右上角)出現在控制檯以下錯誤:
Tcl_AsyncDelete :異步處理程序由錯誤的線程刪除
我不知道它爲什麼發生或它的意思,請幫助!
您的簡歷版適用於我...必須有一些你忘記添加,這是導致你的問題 – mguijarr 2014-11-02 19:52:30
@mguijarr我在谷歌閱讀,這個錯誤是更常見的窗口,你的SO?我的是Windows 7 x64。也許窗口是問題:/ – 2014-11-02 20:14:50