Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, faq, sources pour Python & Zope
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/05/2012, 11h53   #1
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 623
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien Help Desk, maintenance, réseau, système et +
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 2 623
Points : 3 740
Points : 3 740
Par défaut [Faq tkinter] Comment connaitre et utiliser les options d'un Widget ?

Bonjour,

Suite à une discussion récente du forum pourtant sur la confusion entre attributs et options d'un Widget Tkinter je vous propose de rajouter dans la FAQ ce qui suit.

---
Citation:
Comment connaître et utiliser les options d'un Widget ?

dir(widget) ne retourne que la liste des attributs de la classe Python permettant de gérer un Widget, pour connaître la liste des noms des options d'un Widget vous devez utiliser widget.keys().
Code :
1
2
3
4
>>> import Tkinter as Tk
>>> l = Tk.Label()
>>> l.keys()
['activebackground', 'activeforeground', 'anchor', 'background', 'bd', 'bg', 'bitmap', 'borderwidth', 'compound', 'cursor', 'disabledforeground', 'fg', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'justify', 'padx', 'pady', 'relief', 'state', 'takefocus', 'text', 'textvariable', 'underline', 'width', 'wraplength']
Pour obtenir sous la forme d'un dictionnaire, ou la clé est le nom de l'option sous la forme d'un string et la valeur celle de l'option, vous devez utilise widget.configure() ou widget.config(), ce qui est strictement la même chose.

Pour connaître la valeur d'une option utilisez widget.cget('NomDelOption'), widget['NomDelOption'], widget.config('NomDelOption') ou encore widget.configure('NomDelOption').
Code :
1
2
3
4
5
6
7
>>> l = Tk.Label()
>>> l['width']
0
>>> l.cget('width')
0
>>> l.config('width')
('width', 'width', 'Width', 0, 0)
widget.cget('NomDelOption') est la méthode conseillée.

A noter que Tkinter supporte les erreurs de syntaxe.
Code :
1
2
>>> l.configure('widt')
('width', 'width', 'Width', 0, 10)
Pour modifier une option vous pouvez utiliser widget['NomDelOption'] = Valeur, widget.config(NomDelOption=Valeur) ou widget.configure(NomDelOption=Valeur).
Code :
1
2
3
4
>>> l = Tk.Label()
>>> l.configure(width=10)
>>> l.config(width=10)
>>> l['width'] = 10
widget.config(NomDelOption=Valeur) (et .configure() qui est exactement la même chose) est la méthode conseillée.

Vous pouvez, bien sur, aussi spécifier l'option lors de la création de l'instance, sous la forme NomDelInstance = ClasseTkinter(Option=Valeur)
Code :
>>> l = Tk.Label(width=10)
---

Fervents lecteurs du forum vous trouverez sans doute ma proposition puérile mais je pense que cela peux amener le lecteur a comprendre qu'il manipule autre chose que du code Python.
Pas du tout habitué à ce genre de proposition j’attends avec impatience vos commentaires/critiques.
__________________
Merci d'utiliser le forum pour les questions techniques.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2012, 12h09   #2
afranck64
Membre Expert
 
Avatar de afranck64
 
Homme Franck Awounang N.
Étudiant
Inscription : janvier 2009
Messages : 587
Détails du profil
Informations personnelles :
Nom : Homme Franck Awounang N.
Âge : 21
Localisation : Autre

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 587
Points : 1 025
Points : 1 025
Envoyer un message via Yahoo à afranck64
Je trouve ok. En ajoutant le fait que les methodes avec __getitem__/__setitem__
Code :
1
2
l['width'] = 10
foo = l['width']
ne sont pas tout a fait fonctionnelles apres le packaging du Widget.
__________________
Win 7 HP 64 bits /Ubuntu 12.04, - AMD A6 Quad: Py32 / Py27
Citation:
CONTENU D'UNE QUESTION
Exemples:
- Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
- Code source du morceau de programme où il y a un bogue
- Ligne de code sur laquelle le bogue apparaît
- Erreur complète retournée pas l'interpréteur Python
- Recherche déjà effectuée (FAQ, Tuto, Web, ...)
- Tests déjà effectués
afranck64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2012, 12h15   #3
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 623
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien Help Desk, maintenance, réseau, système et +
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 2 623
Points : 3 740
Points : 3 740
C'est à dire ?
Tu conseille de rajouter la notion d'.update() ?

Edit: .update() est déjà abordé dans la FAQ
__________________
Merci d'utiliser le forum pour les questions techniques.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h00.


 
 
 
 
Partenaires

Hébergement Web