sepulkary
@sepulkary
Инженер-электронщик, в основном

Как вывести графическое окно, не блокирующее основной консольный поток?

В дополнение к основному потоку Python-программы хочу вывести графическое окошко-предупреждение:

from datetime import datetime
import threading
from time import sleep
from tkinter import *

def show_notification_window():
    root = Tk()
    root.geometry("300x300")
    warning_message = Message(root, text="Cthulhu fhtagn!")
    warning_message.pack()
    root.mainloop()


while True:
    print(datetime.now().strftime("%H:%M:%S"))
    
    gui_thread = threading.Thread(target=show_notification_window())
    gui_thread.start()
    
    sleep(1)


Окно выводится, но блокирует основной поток до тех пор, пока не будет закрыто.

Как сделать неблокирующее графическое окно? Графическое окно никак не взаимодействует с основным потоком.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
lxstvayne
@lxstvayne
Люблю Python
Тебе не нужно вызывать функцию по отрисовке окна, тебе нужно в target передать функцию без вызова, а если потребуется передать в неё параметры, тогда ещё передаёшь args в виде tuple.
gui_thread = threading.Thread(target=show_notification_window)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы