Я пытаюсь создать неблокирующее окно сообщений tkiner, используя многопоточность.Я знаю, что окно сообщений не определяется таким образом, но я предпочел концепцию и функции окна сообщений.У меня есть настоящая основная программа, которая довольно большая и сложная, поэтому я показываю пример
программы toto.py
import threading
from disp_message import disp_message
msg =" This is a test message"
msgtype = 1
t1 = threading.Thread(target=disp_message, args=(msg,msgtype,))
t1.start()
t1.join()
for i in range(100000):
print(i)
disp_message(msg,msgtype)
print("Done!")
disp_messagee python function code in another file
from tkinter import *
from tkinter import messagebox
def disp_message(msg,msgtype):
top = Tk()
top.withdraw()
if msgtype==1:
messagebox.showwarning("Warning",msg)
elif msgtype==2:
messagebox.showinfo("information",msg)
else:
messagebox.showerror("Error",msg)
Когда я запускаю эту программу, у меня возникают 2 проблемы 1. Следующая ошибка
Traceback (most recent call last):
File "toto.py", line 13, in <module>
disp_message(msg,msgtype)
File "c:\NSE\scripts\disp_message.py", line 8, in disp_message
messagebox.showwarning("Warning",msg)
File "C:\ProgramData\Anaconda\lib\tkinter\messagebox.py", line 87, in showwarning
return _show(title, message, WARNING, OK, **options)
File "C:\ProgramData\Anaconda\lib\tkinter\messagebox.py", line 72, in _show
res = Message(**options).show()
File "C:\ProgramData\Anaconda\lib\tkinter\commondialog.py", line 39, in show
w = Frame(self.master)
File "C:\ProgramData\Anaconda\lib\tkinter\__init__.py", line 2744, in __init__
Widget.__init__(self, master, 'frame', cnf, {}, extra)
File "C:\ProgramData\Anaconda\lib\tkinter\__init__.py", line 2299, in __init__
(widgetName, self._w) + extra + self._options(cnf))
RuntimeError: main thread is not in main loop
Во-вторых, он отображает окно сообщения и ожидает подтверждения.
В то время как моя цель состоит в том, чтобы отобразить окно сообщений и параллель, пусть программа будет выполнена и завершена.
Можете ли вы помочь PL?