Я хочу написать программу с использованием Tkinter GUI, которая выполняет определенную задачу в потоке. Когда во время выполнения задачи возникает ошибка, программа должна вывести окно с ошибкой, например, используя tkMessageBox. Конечно, программа вылетает, когда она должна вывести окно сообщения из нового потока, поскольку Tkinter не является потокобезопасным, но я надеюсь, что есть решение этой проблемы.
Вот простой пример не рабочий код (отредактировал):
from tkinter import *
import tkMessageBox
from threading import *
import time
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(frame, text = "Task", command = self.thread_task)
self.button.pack(side=LEFT)
def thread_task(self):
thread = Thread(target = self.task)
thread.start()
def task(self):
#perform task...
time.sleep(1) #Just as a filler in the code
#command to open an error popup, e.g. tkMessageBox.showerror("Error", "Problem occured")
root = Tk()
app = App(root)
root.mainloop()