IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Activer ou désactiver un widget. Problème avec grid


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Activer ou désactiver un widget. Problème avec grid
    Bonjour,

    Je viens de découvrir par hasard mais à grand peine une difficulté avec grid.

    Si l'on écrit sur une ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monLabel=Label(root,text="Essai",state=DISABLED).grid(row=0,column=0)
    Et ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monLabel.config(state=NORMAL)
    On obtient une erreur : builtins.AttributeError: 'NoneType' object has no attribute 'config'Il faut mettre l'instruction grid sur une autre ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monLabel=Label(root,text="Essai",state=DISABLED)
    monLabel.grid(row=0,column=0)
    Et là, ça marche.

    Je ne sais pas si c'est documenté quelque part, mais ça peut servir...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 426
    Points : 37 008
    Points
    37 008
    Par défaut
    Salut,

    Citation Envoyé par hcroze Voir le message
    Je ne sais pas si c'est documenté quelque part, mais ça peut servir...
    Tous ceux qui débutent s'y font piéger.
    Et il y a probablement une discussion par mois ouverte par le débutant qui découvre cela.
    Ecrire en deux lignes monLabel=Label(...).grid(....) équivaut à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monLabel=Label(...)
    monLabel=monLabel.grid(....)
    et non à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monLabel=Label(...)
    monLabel.grid(....)
    Ce qui est documenté est que la méthode .grid retourne None et çà suffit.
    A vous de faire attention lorsque vous créez un label en voulant l'afficher en une seule instruction: s'il est inutile de modifier le Label plus tard, inutile de lui associer une variable. Par contre, associer l'objet créé à une variable avant de le modifier est impossible à faire dans une seule opération. Car un Label n'est pas un objet immutable: le modifier ne retournera pas un nouveau Label à stocker à la place du premier (et vous avez déjà rencontré ces petites différentes entre chaînes de caractères (immutables) et listes (mutables)).


    - W

Discussions similaires

  1. Contrôler si le javascript est activé ou désactivé avec IE6.
    Par beegees dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/04/2007, 12h09
  2. Problème avec Active Directory
    Par Poussy-Puce dans le forum ASP
    Réponses: 3
    Dernier message: 09/02/2007, 16h31
  3. Réponses: 1
    Dernier message: 17/09/2006, 17h31
  4. problème avec IdUDPServer1.Active:=false
    Par korntex5 dans le forum Delphi
    Réponses: 1
    Dernier message: 18/08/2006, 16h54
  5. Réponses: 21
    Dernier message: 02/10/2005, 20h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo