Python 3 tkinter: focus_force в окне сообщений - PullRequest
1 голос
/ 17 июня 2020

Я запускаю код 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 работает как положено.

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете использовать аргумент default в функции messagebox.

константа по умолчанию

Какую кнопку сделать по умолчанию: ABORT, RETRY , IGNORE, OK, CANCEL, YES или NO (константы определены в модуле tkMessageBox).

Итак, вот пример выделения кнопки «ОК».

import tkinter as tk
from tkinter import messagebox

def popup(message, title=None):
    root = tk.Tk()
    root.withdraw()
    messagebox.showinfo(title, message, parent=root, default = "ok")

    root.destroy()

popup('foo')

Надеюсь, это поможет!

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