Les deux révisions précédentesRévision précédente | |
issue188:python [2023/01/05 11:45] – auntiee | issue188:python [2023/01/06 14:50] (Version actuelle) – andre_domenech |
---|
| |
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. |
| |
| |
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. | 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. 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. | 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. 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 « défaut » 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é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 « défaut » et pour Mac OS X, c'est aqua. Vous parlez d'une confusion ! |
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. | 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 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). | 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). |
| |
| |
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 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 ?). | 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 ». |
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 - 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). | 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). |
| |
| |