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()