Я запускаю код python 3 в фоновом режиме, который в некоторых ситуациях должен показывать всплывающее окно. Для этого я использую tkinter:
import tkinter as tk
from tkinter import messagebox
def popup(message, title=None):
root = tk.Tk()
root.withdraw()
root.wm_attributes("-topmost", 1)
messagebox.showinfo(title, message, parent=root)
root.destroy()
popup('foo')
Кнопка ok в этом информационном окне должна автоматически получать фокус при появлении. К сожалению, я не могу этого сделать. Пробовал root.focus()
, но не помогает. Есть идеи, как это решить? TIA
BTW: код должен быть независимым от платформы (Linux и Windows).
Редактировать: Возможно, я неправильно понял ключевое слово focus, и мне нужно прояснить свой вопрос:
root = tk.Tk()
root.focus_force()
root.wait_window()
При вызове кода выше окна root активно, даже если я работал, например, в браузере раньше. Возможно ли это также для messagebox.showinfo
? Добавление root.focus_force()
во всплывающее окно не помогает.
Это вообще возможно? Или нужно создать свое окно root? Мне очень нравится внешний вид окна сообщения со значком.
Редактировать 2: Вот видео: https://filebin.net/no195o9rjy3qq5c4/focus.mp4 Редактор является активным окном, даже после того, как всплывающее окно было показано. В Linux I работает как положено.