Tkinter Simpledialog Box не получает фокус в Windows 10 с Python3

В приведенном ниже коде первое диалоговое окно сразу же фокусируется, поэтому пользователь может просто ввести ответ и нажать клавишу ввода. Во втором случае этого не происходит при работе в Windows. При работе Raspbian 9 оба окна получают фокус при открытии.

Можно ли как-то сфокусировать оба окна, когда они открываются в Windows?

import tkinter as tk
from tkinter import simpledialog

root = tk.Tk()
root.withdraw()

answer1 = simpledialog.askstring("Test1","This one gets focus when it opens",parent=root)
answer2 = simpledialog.askstring("Test2","This one doesn't",parent=root)

2 ответа

Я наблюдал за этим вопросом уже несколько дней, надеясь, что кто-то может пролить свет на этот вопрос. Я использую Python 3.6.5 под Windows 10 и получаю ту же проблему.

Я пробовал несколько разных вещей, но кажется, что Microsoft делает вещи по-своему. Я наконец нашел вещь, которая работает, но только если вы не скрываете корневое окно:

import tkinter as tk
from tkinter import simpledialog

root = tk.Tk()
#root.withdraw()     # This does not work if you hide the root window

root.update_idletasks()
answer1 = simpledialog.askstring("Test1","This one gets focus",parent=root)

root.update_idletasks()
answer2 = simpledialog.askstring("Test2","This one doesn't",parent=root)

Я обнаружил, что работает следующее (с небольшим мерцанием корневого окна при уничтожении()):

      root = tk.Tk()
root.withdraw()
filename = filedialog.askopenfilename()
root.deiconify()
root.destroy()
Другие вопросы по тегам