4 votes

Les boîtes de dialogue simples de Tkinter n'obtiennent pas le focus sous Windows 10 avec Python3

Dans le code ci-dessous, la première boîte de dialogue reçoit immédiatement le focus, de sorte que l'utilisateur peut simplement taper une réponse et appuyer sur Entrée. Dans la seconde, cela ne semble pas se produire lorsqu'elle est exécutée sous Windows. Sous Raspbian 9, les deux fenêtres obtiennent le focus lorsqu'elles s'ouvrent.

Y a-t-il un moyen de faire en sorte que les deux fenêtres obtiennent le focus lorsqu'elles s'ouvrent dans 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)

6voto

figbeam Points 4212

Je regarde cette question depuis quelques jours en espérant que quelqu'un puisse m'éclairer sur ce sujet. J'utilise Python 3.6.5 sous Windows 10 et j'ai le même problème.

J'ai essayé plusieurs choses différentes, mais il semble que Microsoft fasse les choses à sa manière. J'ai finalement trouvé une solution qui fonctionne, mais seulement si vous ne cachez pas la fenêtre racine :

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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X