2010-10-01 8 views
9

J'ai un script qui utilise Tkinter pour faire apparaître une fenêtre avec un message. Comment est-ce que je m'assure qu'il prend la focalisation pour que l'utilisateur ne manque pas et explicitement doit fermer la fenêtre. le code est:Rendre le widget Tkinter centré

root = Tk() 
to_read = "Stuff" 
w = Label(root, text=to_read) 
w.pack() 
root.mainloop() 

Répondre

14

Vous pouvez utiliser la méthode focus_force. Voir les éléments suivants:

Mais notez la la documentation:

w.focus_force()

Forcer la mise au point d'entrée au widget. C'est impoli. Il est préférable d'attendre que le gestionnaire de fenêtres vous donne le focus. Voir aussi .grab_set_global() ci-dessous.

Mise à jour: Cela devrait fonctionner sur root. Par exemple, essayez d'exécuter le code suivant. Cela va créer une fenêtre et vous pouvez changer de focus. Après 5 secondes, il va essayer d'obtenir la mise au point.

from Tkinter import * 

root = Tk() 
root.after(5000, lambda: root.focus_force()) 
root.mainloop() 
+0

la commande est ok, mais où est-il aller dans mon code? Il semble que mon format sera root.focus_force, mais il donne une erreur d'attribut. – Ali

+1

@Ali: J'ai mis à jour la question pour répondre à votre commentaire. – ars

+0

il semble fonctionner maintenant. J'ai laissé de côté la fonction .after. Merci. – Ali

1

Ce qui a fonctionné pour moi était:

root.wm_attributes("-topmost", 1) 
root.focus_force() 

Je trouve cela et une autre façon de le faire dans win32 here

Questions connexes