2009-02-24 8 views
2

J'essaie d'aligner des widgets d'étiquettes et de canevas. Pour ce faire, je dois connaître la largeur de mes boîtes d'étiquettes. Je voudrais que mon widget ajuste automatiquement si l'utilisateur change la taille de la police du système, donc je ne veux pas coder en dur 12 pixels par caractère. Si je mesure le widget d'étiquette, il fait toujours 1 pixel de large. Jusqu'à ce que j'appelle .update(), alors j'obtiens la bonne valeur. Mais .update() met une fenêtre à l'écran avec mon label, cette fenêtre disparait quand j'emballe finalement mes derniers widgets. Mais cela provoque un flash indésirable quand j'ai d'abord mis en place le widget. Alors, comment puis-je mesurer un widget d'étiquette sans .update() 'it? Ou comment puis-je mettre à jour() un widget sans l'afficher à l'écran? J'utilise Python si c'est important.tkinter - définir la géométrie sans afficher de fenêtre

Répondre

1

Retirer la fenêtre avant d'appeler la mise à jour. La commande que vous voulez est wm_withdraw

root = Tk() 
root.wm_withdraw() 
<your code here> 
root.wm_deiconify() 

Cependant, si votre problème réel aligne les widgets que vous ne sont généralement pas besoin de connaître la taille des widgets. Utilisez le gestionnaire de géométrie de la grille. Sortez un morceau de papier millimétré et posez vos widgets dessus. N'hésitez pas à répartir autant de cases que nécessaire pour chaque widget. La conception peut alors se traduire facilement en une série d'appels de grille.

Questions connexes