Outils pour utilisateurs

Outils du site


issue188:python

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édentesRévision précédente
Prochaine révision
Révision précédente
issue188:python [2023/01/04 19:11] d52frissue188:python [2023/01/06 14:50] (Version actuelle) andre_domenech
Ligne 13: Ligne 13:
 •  A label element. This element contains the label text, image or both.** •  A label element. This element contains the label text, image or both.**
  
-Dans le numéro 181 de la FCM, j'ai parlé des thèmes et des styles et de la façon dont j'essayais de créer une carte de styles pour le TNotebook ttk. C'était en mai dernier. Nous sommes en décembre et ma « vie professionnelle » a été très occupée par l'écriture de mon livre sur PAGE, par ma tentative d'apporter un soutien à PAGE avec Don Rozenberg et par la tentative de vivre avec les problèmes médicaux que j'ai eu le « hasard » d'avoir.+Dans le numéro 181 du FCM, j'ai parlé des thèmes et des styles et de la façon dont j'essayais de créer une carte de styles pour le TNotebook ttk. C'était en mai dernier. Nous sommes en décembre et ma « vie professionnelle » a été très occupée par l'écriture de mon livre sur PAGE, par ma tentative d'aider à la prise en charge de PAGE avec Don Rozenberg et par la tentative de vivre avec les problèmes médicaux que j'ai la « chance » d'avoir.
  
-J'en suis arrivé au chapitre de mon livre sur le jeu de widgets ttk, et je voulais essayer d'expliquer le concept compliqué des thèmes et des styles.+J'en suis arrivé au chapitre de mon livre sur l'ensemble de widgets ttk, et je voulais essayer d'expliquer le concept compliqué des thèmes et des styles.
  
-Tout commence par un style. Les styles contrôlent l'apparence d'un widget. Un thème « regroupe » tous les styles de widgets dans un groupe. On espère que tous les styles fonctionnent ensemble pour que tous les widgets du thème aient la même apparence.+Tout commence par un style. Les styles contrôlent l'apparence d'un widget. Un thème « regroupe » tous les styles de widgets dans un groupe. On espère que tous les styles fonctionnent ensemble pour que tous les widgets du thème aient la même apparence et donnent la même sensation.
  
 Comme tout commence par un style pour les widgets, nous allons nous pencher sur une seule classe de widgets pour commencer. Nous allons commencer par la classe ttk Button. Le style de cette classe de widget s'appelle « TButton ». Comme tout commence par un style pour les widgets, nous allons nous pencher sur une seule classe de widgets pour commencer. Nous allons commencer par la classe ttk Button. Le style de cette classe de widget s'appelle « TButton ».
  
 Chaque style de widget est composé d'un ou plusieurs éléments. Un bouton typique comporte quatre éléments : Chaque style de widget est composé d'un ou plusieurs éléments. Un bouton typique comporte quatre éléments :
-••La bordure autour de l'extérieur du bouton, +••la bordure autour de l'extérieur du bouton, 
-••Un élément de mise en évidence qui change de couleur lorsque le bouton a le focus d'entrée, +••un élément de mise en évidence qui change de couleur lorsque le bouton a le focus d'entrée, 
-••Un élément de remplissage, et +••un élément de remplissage, et 
-••Un élément d'étiquette. Cet élément contient le texte de l'étiquette, une image ou les deux.+••un élément d'étiquette. Cet élément contient le texte de l'étiquette, une image ou les deux.
  
  
Ligne 34: Ligne 34:
 When you decide to start working on your own styles, and get ready to wrap them all up in a theme, you should base everything on one theme. For Linux users like us, the simplest theme to start with would be the default theme. Not only does every OS have the default theme built in, but each OS has a different “default” theme that, if you don’t set a specific theme, it will be used by “default”. A logical person would think that that would be default. And you are right, if you are talking about Linux. For Windows, the default theme is winnative, not default and for Mac OS X it is aqua. Talk about confusion!** When you decide to start working on your own styles, and get ready to wrap them all up in a theme, you should base everything on one theme. For Linux users like us, the simplest theme to start with would be the default theme. Not only does every OS have the default theme built in, but each OS has a different “default” theme that, if you don’t set a specific theme, it will be used by “default”. A logical person would think that that would be default. And you are right, if you are talking about Linux. For Windows, the default theme is winnative, not default and for Mac OS X it is aqua. Talk about confusion!**
  
-Chaque widget a un style qui est contrôlé par le thème. C'est ici que cela devient quelque peu frustrant. Chaque système d'exploitation a ses propres thèmes intégréset certains systèmes d'exploitation ont plus de thèmes intégrés que d'autres. Comme nous sommes un magazine basé sur Linux, je vais commencer par ceux-là, puis je vous donnerai ceux des autres systèmes d'exploitation.+Chaque widget a un style qui est contrôlé par le thème. C'est ici que cela devient quelque peu frustrant. Chaque système d'exploitation a ses propres thèmes intégrés et certains systèmes d'exploitation ont plus de thèmes intégrés que d'autres. Comme nous sommes un magazine basé sur Linux, je vais commencer par ceux-là, puis je vous donnerai ceux des autres systèmes d'exploitation.
  
-Il est évident que Linux n'est pas le mieux loti en ce qui concerne le nombre de thèmes fournis avec le système d'exploitation. Vous remarquerez également que les quatre thèmes qui sont « natifs » dans Linux sont également disponibles sur les deux autres systèmes d'exploitation. Si vous envisagez d'exécuter votre application sous les trois systèmes d'exploitation, vous devriez vraiment vous en tenir à l'un de ces quatre thèmes.+Il est évident que Linux n'est pas le mieux loti en ce qui concerne le nombre de thèmes fournis avec le système d'exploitation. Vous remarquerez également que les quatre thèmes qui sont « natifs » dans Linux sont également disponibles sur les deux autres systèmes d'exploitation. C'est sympa ; si vous envisagez d'exécuter votre application sous les trois systèmes d'exploitation, vous devriez vraiment vous en tenir à l'un de ces quatre thèmes.
  
-Lorsque vous décidez de commencer à travailler sur vos propres styles et que vous êtes prêt à les intégrer dans un thème, vous devez tout baser sur un seul thème. Pour les utilisateurs de Linux comme nous, le thème le plus simple pour commencer est le thème par défaut. Non seulement tous les systèmes d'exploitation ont un thème par défaut intégré, mais chaque système d'exploitation a un thème « par défaut » différent qui, si vous ne définissez pas un thème spécifique, sera utilisé par « défaut ». Une personne logique penserait que c'est le thème par défaut. Et vous avez raison, si vous parlez de Linux. Pour Windows, le thème par défaut est winnative, pas default et pour Mac OS X, c'est aqua. Vous parlez d'une confusion !+Lorsque vous décidez de commencer à travailler sur vos propres styles et que vous êtes prêt à les intégrer dans un thème, vous devez tout baser sur un seul thème. Pour les utilisateurs de Linux comme nous, le thème le plus simple pour commencer est le thème par défaut. Tous les systèmes d'exploitation ont un thème par défaut intégré, mais chaque système d'exploitation a un thème « par défaut » différentqui, si vous ne définissez pas un thème spécifique, sera utilisé par « défaut ». Une personne logique penserait que c'est le thème par défaut. Et vous avez raison, si vous parlez de Linux. Pour Windows, le thème par défaut est winnative, pas « défaut » et pour Mac OS X, c'est aqua. Vous parlez d'une confusion !
  
  
Ligne 49: Ligne 49:
 Quoi qu'il en soit, nous allons utiliser le bouton ttk, pour voir ce que nos styles peuvent faire. Rappelez-vous, il y a quelques paragraphes, nous avons parlé des éléments. Donc pour la classe ttk Button, le nom du style est TButton. Les éléments sont assemblés dans une « boîte vide ». Pour un bouton sous le thème par défaut, ils sont assemblés de l'extérieur vers l'intérieur dans cet ordre. Border, focus, padding et, enfin, label. Comme dans le diagramme ci-dessus. Quoi qu'il en soit, nous allons utiliser le bouton ttk, pour voir ce que nos styles peuvent faire. Rappelez-vous, il y a quelques paragraphes, nous avons parlé des éléments. Donc pour la classe ttk Button, le nom du style est TButton. Les éléments sont assemblés dans une « boîte vide ». Pour un bouton sous le thème par défaut, ils sont assemblés de l'extérieur vers l'intérieur dans cet ordre. Border, focus, padding et, enfin, label. Comme dans le diagramme ci-dessus.
  
-Chacun de ces éléments possède un attribut « sticky » (collant) qui définit le côté de la « boîte » sur lequel il va se coller. Si, par exemple, un élément a « ew » pour l'attribut « sticky », il s'étendra et s'allongera afin d'atteindre les côtés droit et gauche de notre boîte imaginaire. Puisqu'il n'y a pas de définition pour le nord ou le sud, il n'a pas besoin de s'étirer jusqu'au haut et au bas de la boîte. N'importe lequel des quatre points peut être défini, il n'est pas nécessaire que les quatre soient définis.+Chacun de ces éléments possède un attribut « sticky » (collant) qui définit le côté de la « boîte » sur lequel il va se coller. Si, par exemple, un élément a « ew » (est-ouest) pour l'attribut « sticky », il s'étendra et s'allongera afin d'atteindre les côtés droit et gauche de notre boîte imaginaire. Puisqu'il n'y a pas de définition pour le nord ou le sud, il n'a pas besoin de s'étirer jusqu'au haut et au bas de la boîte. N'importe lequel des quatre points peut être défini, il n'est pas nécessaire que les quatre soient définis.
  
-La plupart des styles ttk ont une disposition qui organise les différentes couches qui composent le style du widget. Certaines classes de widgets n'ont pas de mise en page. Tant que le widget a une disposition (layout), vous pouvez utiliser les commandes suivantes dans le REPL Python pour obtenir des informations sur ce layout(affiché en haut à droite).+La plupart des styles ttk ont une disposition qui organise les différentes couches qui composent le style du widget. Certaines classes de widgets n'ont pas de disposition. Tant que le widget a une disposition (layout), vous pouvez utiliser les commandes suivantes dans le REPL Python pour obtenir des informations sur ce layout (en haut à droite).
  
  
Ligne 60: Ligne 60:
 Now, it’s time for me to pull on my “Wellies” (Rubber Boots for those who aren’t Brits, either in family, or location, or heart), and stomp around a little bit more. Each of those elements can (but don’t have to) have options. I’m just going to dump out the options for each of the elements (below).** Now, it’s time for me to pull on my “Wellies” (Rubber Boots for those who aren’t Brits, either in family, or location, or heart), and stomp around a little bit more. Each of those elements can (but don’t have to) have options. I’m just going to dump out the options for each of the elements (below).**
  
-C'est clair comme de l'eau de roche, n'est-ce pas ? Quand une classe de widget a un layout, il sera retourné comme une liste de tuples qui ont le nom de l'élément et un dictionnaire qui décrit cet élément. (Je viens de sacrément troubler l'eau, pas vrai ?).+C'est clair comme de la boue, n'est-ce pas ? Quand une classe de widget a un layout, il sera retourné comme une liste de tuples qui ont le nom de l'élément et un dictionnaire qui décrit cet élément. (Je viens d'ajouter beaucoup plus de boue, pas vrai ?)
  
-Pensez-y de cette façon. L'élément le plus extérieur est la bordure. Il a son attribut sticky qui est, dans ce cas, le nord, le sud, l'est et l'ouest (ainsi la bordure s'étendra à tous les côtés du widget), et un attribut border qui a une largeur de 1 pixel. Il possède également un élément enfant. Dans ce cas, il s'agit de l'élément focus. Il possède un attribut sticky qui s'étend également vers le nord, le sud, l'est et l'ouest. L'élément focus n'a pas de bordure, mais il a un enfant, l'élément padding. Celui-ci n'a qu'un seul attribut - comme vous pouvez le deviner, c'est l'attribut sticky, et encore une fois, il s'étend vers le nord, le sud, l'est et l'ouest, et il a AUSSI un élément enfant - l'élément label. celui-ci possède également un attribut sticky et, une fois encore, il s'agit de « nsew ».+Pensez-y de cette façon. L'élément le plus extérieur est la bordure. Il a son attribut sticky qui est, dans ce cas, le nord, le sud, l'est et l'ouest (ainsi la bordure s'étendra à tous les côtés du widget), et un attribut border qui a une largeur de 1 pixel. Il possède également un élément enfant. Dans ce cas, il s'agit de l'élément focus. Il possède un attribut sticky qui s'étend également vers le nord, le sud, l'est et l'ouest. L'élément focus n'a pas de bordure, mais il a un enfant, l'élément padding. Celui-ci n'a qu'un seul attribut - comme vous pouvez le deviner, c'est l'attribut sticky, et encore une fois, il s'étend vers le nord, le sud, l'est et l'ouest, et il a AUSSI un élément enfant - l'élément label. Celui-ci possède également un attribut sticky et, une fois encore, il s'agit de « nsew ».
  
-Maintenant, il est temps pour moi d'enfiler mes « Wellies » (bottes en caoutchouc pour ceux qui ne sont pas britanniques, que ce soit par la famille, le lieu ou le cœur) et de piétiner un peu plus. Chacun de ces éléments peut (mais ne doit pas) avoir des options. Je vais simplement énumérer les options pour chacun de ces éléments (ci-dessous).+Maintenant, il est temps pour moi d'enfiler mes « Wellies » (bottes en caoutchouc pour ceux qui ne sont pas britanniques, que ce soit par la famille, le lieu ou le cœur) et de piétiner un peu plus. Chacun de ces éléments peut (mais n'est pas une obligation) avoir des options. Je vais simplement énumérer les options pour chacun de ces éléments (ci-dessous).
  
  
Ligne 76: Ligne 76:
 Not hard at all. Now let’s customize some TRadiobuttons and TCheckbuttons. Here they are in their “native” state.** Not hard at all. Now let’s customize some TRadiobuttons and TCheckbuttons. Here they are in their “native” state.**
  
-Ce sont les choses les plus simples que nous pouvons changer pour que notre style soit comme nous le voulons. Remarquez que j'ai dit les choses les plus faciles. Il peut aussi y avoir des images, mais c'est une présentation pour un autre article. Pour l'instant, nous allons revenir aux options des éléments.+Ce sont les choses les plus simples que nous pouvons changer pour que notre style soit comme nous le voulons. Remarquez que j'ai dit les choses les plus faciles. Il peut aussi y avoir des images, mais ce sera le sujet d'un autre article. Pour l'instant, nous allons revenir aux options des éléments.
  
 Avant de commencer à modifier les choses, regardons à quoi ressemble TButton lors d'une « journée normale » sous le thème Linux par défaut. Avant de commencer à modifier les choses, regardons à quoi ressemble TButton lors d'une « journée normale » sous le thème Linux par défaut.
Ligne 105: Ligne 105:
 Tout d'abord, créons des objets images - en gardant une version globale - afin que la collecte de déchets de Python ne fasse pas disparaître nos images. Ici, nous mettons en place les TRadiobuttons (en bas à droite). Tout d'abord, créons des objets images - en gardant une version globale - afin que la collecte de déchets de Python ne fasse pas disparaître nos images. Ici, nous mettons en place les TRadiobuttons (en bas à droite).
  
-J'ai utilisé le schéma du module partagé afin de ne pas avoir à déclarer une tonne de variables globales. Le module partagé est un fichier vide dans le dossier du projet - que tous les modules peuvent lire et écrire. Le fichier peut porter n'importe quel nom, du moment qu'il a l'extension ".py", et que vous l'importez dans tous les autres fichiers Python qui l'utiliseront. En utilisant le schéma du module partagé, c'est beaucoup plus facile. Maintenant que toutes les images des boutons radios sont définies dans des objets image, nous pouvons créer l'élément que nous allons utiliser (ci-dessous).+J'ai utilisé le schéma du module partagé afin de ne pas avoir à déclarer une tonne de variables globales. Le module partagé est un fichier vide dans le dossier du projet, ouvert en lecture et en écriture à tous les modules. Le fichier peut porter n'importe quel nom, du moment qu'il a l'extension ".py", et que vous l'importez dans tous les autres fichiers Python qui l'utiliseront. En utilisant le schéma du module partagé, c'est beaucoup plus facile. Maintenant que toutes les images des boutons radios sont définies dans des objets image, nous pouvons créer l'élément que nous allons utiliser (ci-dessous).
  
  
Ligne 120: Ligne 120:
 In wrapping up, I thought I’d leave you with a number of resources to help you out, if you become brave and try to create your own style sets. In a later article, I’ll show you how to create your own theme – once you’ve gotten the style sets for all the ttk widgets.** In wrapping up, I thought I’d leave you with a number of resources to help you out, if you become brave and try to create your own style sets. In a later article, I’ll show you how to create your own theme – once you’ve gotten the style sets for all the ttk widgets.**
  
-Une fois que vous vous serez habitué à l'idée, ce ne sera pas si difficile, mais c'est la première fois. Nous définissons donc un nouvel élément avec element_create et lui donnons le nom de 'custom.RBindicator'. Nous déclarons le type d'élément, qui est l'image, puis nous définissons le nom de l'image pour l'état non sélectionné. Ensuite, nous définissons les états sélectionné et désactivé, et nous leur attribuons les images.+Une fois que vous vous serez habitué à l'idée, ce ne sera pas si difficile, mais c'est la première fois. Nous définissons donc un nouvel élément avec element_create et lui donnons le nom de « custom.RBindicator ». Nous déclarons le type d'élément, qui est « image », puis nous définissons le nom de l'image pour l'état non sélectionné. Ensuite, nous définissons les états sélectionné et désactivé, et nous leur attribuons les images.
  
 Enfin, nous devons créer le layout et remplacer l'élément indicateur standard par notre élément personnalisé (page suivante, en haut à droite). Enfin, nous devons créer le layout et remplacer l'élément indicateur standard par notre élément personnalisé (page suivante, en haut à droite).
Ligne 150: Ligne 150:
 https://www.tcl.tk/man/tcl/TkCmd/contents.html https://www.tcl.tk/man/tcl/TkCmd/contents.html
  
-Enfin, je vais vous donner le lien vers la page de manuel « officielle » de ttk Button. Pour découvrir toutes les options et paramètres (et ce que beaucoup d'entre eux signifient), vous pouvez l'obtenir ici.+Enfin, je vais vous donner le lien vers la page « officielle » du manuel de ttk Button. Pour découvrir toutes les options et paramètres (et ce que beaucoup d'entre eux signifient), vous pouvez aller ici.
 https://www.tcl.tk/man/tcl/TkCmd/ttk_button.html  https://www.tcl.tk/man/tcl/TkCmd/ttk_button.html 
  
-(Un mot d'avertissement. Si vous regardez les options de Button.label, vous en verrez une nommée « embossed ». Je n'ai JAMAIS réussi à trouver ce qu'elle est censée faire. Ce n'est pas dans la documentationet si vous essayez de lui donner une valeur, elle est joyeusement ignorée. Allez comprendre).+(Un mot d'avertissement. Si vous regardez les options de Button.label, vous en verrez une nommée « embossed ». Je n'ai JAMAIS réussi à trouver ce qu'elle est censée faire. Ce n'est pas dans la documentation et si vous essayez de lui donner une valeur, elle est joyeusement ignorée. Allez comprendre).
  
  
Ligne 166: Ligne 166:
 Until next time, as always; stay safe, healthy, positive and creative!** Until next time, as always; stay safe, healthy, positive and creative!**
  
-Je vous laisse avec un thème qui est créé en Python, pas en Tcl. C'est un portage du thème Plastik qui fait partie de la bibliothèque Python ttkwidgets, qui, comme la plupart des thèmes, est écrit en Tcl et est assez difficile à porter en Python à moins d'être à l'aise avec les deux langages. Vous pouvez obtenir le fichier Plastic-python à l'adresse suivante +Je vous laisse avec un thème qui est créé en Python, pas en Tcl. C'est un portage du thème Plastik qui fait partie de la bibliothèque Python ttkwidgets, qui, comme la plupart des thèmes, est écrit en Tcl et est assez difficile à porter en Python à moins d'être à l'aise dans les deux langages. Vous pouvez obtenir le fichier Plastic-python à l'adresse suivante 
 https://android.googlesource.com/toolchain/python/+/243b47fbef58ab866ee77567f2f52affd8ec8d0f/Python-2.7.3/Demo/tkinter/ttk/plastik_theme.py  https://android.googlesource.com/toolchain/python/+/243b47fbef58ab866ee77567f2f52affd8ec8d0f/Python-2.7.3/Demo/tkinter/ttk/plastik_theme.py 
  
Ligne 174: Ligne 174:
 Suivez la documentation sur la façon de l'installer et de l'intégrer dans vos propres projets de programmes. La documentation se trouve à l'adresse suivante : https://ttkthemes.readthedocs.io/en/latest/ . Suivez la documentation sur la façon de l'installer et de l'intégrer dans vos propres projets de programmes. La documentation se trouve à l'adresse suivante : https://ttkthemes.readthedocs.io/en/latest/ .
  
-Jusqu'à la prochaine fois, comme toujours restez en sécurité, en bonne santé, positif et créatif !+Jusqu'à la prochaine fois, comme toujoursrestez en sécurité, en bonne santé, positif et créatif !
  
issue188/python.1672855861.txt.gz · Dernière modification : 2023/01/04 19:11 de d52fr