Python tinker, неблокирующее окно сообщений, многопоточность - PullRequest
0 голосов
/ 19 сентября 2019

Попытайтесь создать простое неблокирующее окно сообщения в повозке, чтобы оно отображало информацию и программа завершилась так, как я предпочел концепцию окна сообщений для окна

, мой код следует

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 function code is

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)

, когда яя запускаю программу, которая выдает мне следующую ошибку

 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

, а во-вторых, она не отображает окно сообщения tkinter параллельно

Можете ли вы мне помочь?во-вторых, не уверен, где требуется t1.join () или нет, так как моя цель - просто отобразить сообщение и полностью выполнить программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...