Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
barre_de_menu [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


barre_de_menu

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
barre_de_menu [2008/07/05 17:20]
tyrtamos
barre_de_menu [2008/07/08 07:40] (Version actuelle)
tyrtamos
Ligne 437: Ligne 437:
 On veut qu'un menu se présente un peu comme cela (exemple des items d'un menu de type "Fichier"): On veut qu'un menu se présente un peu comme cela (exemple des items d'un menu de type "Fichier"):
  
-  Ouvrir       Ctrl+O +  Ouvrir        Ctrl+O 
-  Fermer       Ctrl+W +  Fermer        Ctrl+W 
-  Enregistrer  Ctrl+S+  Enregistrer   Ctrl+S
   Quitter       Alt+X   Quitter       Alt+X
  
-C'est à dire que les raccourcis commandes claviers sont calés automatiquement à droite.+C'est à dire que les raccourcis commandes claviers sont alignés.
  
 Le problème, c'est que dans une police de caractères type "arial", les caractères n'ont pas tous la même largeur en pixels à l'écran. Le problème, c'est que dans une police de caractères type "arial", les caractères n'ont pas tous la même largeur en pixels à l'écran.
  
-Alorson va utiliser une des fonctions du module tkFont: "measure(texte)", qui mesure en pixel la longueur d'un texte. Et on ajustera à la fin avec des espaces.+==== Solution "normale" avec l'option "accelerator" ==== 
 + 
 +J'ai mis pas mal de temps à trouver cette option qui ne se trouve pas dans tous les manuels. 
 + 
 +Au lieu de faire par exemple: 
 + 
 +<code python> 
 +self.edition.add_command(label="Copier   Ctrl-C"underline=2, command = self.copier) 
 +</code> 
 + 
 +On fait: 
 + 
 +<code python> 
 +self.edition.add_command(label="Copier", accelerator="Ctrl-C", underline=2, command = self.copier) 
 +</code> 
 + 
 +Et les différents codes de commande clavier d'un même menu et cités par accelerator, seront alignés 
 + 
 +==== Solution avec "measure" ==== 
 + 
 +Je cite cette solution pour mémoire et parce que c'est un exemple d'utilisation de la méthode "measure" qui peut servir à d'autres choses. 
 + 
 +On va utiliser une des fonctions du module tkFont: "measure(texte)", qui mesure en pixel la longueur d'un texte. Et on ajustera à la fin avec des espaces
 + 
 +L'alignement n'est pas parfait: on peut faire une erreur maxi égale au nombre de pixels d'un espace - 1. Mais c'est tout de même très bien! 
 + 
 +l'alignement choisi ici est de caler les codes clavier à droite. Mais on pourrait aussi les aligner sur leur 1er caractère en modifiant le code.
  
 La fonction qui ajuste l'item s'appelle ici: ajusteitems(). La fonction qui ajuste l'item s'appelle ici: ajusteitems().
barre_de_menu.txt · Dernière modification: 2008/07/08 07:40 de tyrtamos