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 :

Problèmes avec la suppression et la désactivation des boutons


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Débutant
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Débutant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Problèmes avec la suppression et la désactivation des boutons
    Bonjour, j'essaie de supprimer mes boutons Tkinter mais ça ne fontionne pas voici le code que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from tkinter import *
    app= Tk()
    app.geometry("600x600+200+100")
    app["bg"] = "deep pink"
    app.title("PUTACLICK SIMULATOR 2000")
     
     
    def suppr():
        b1.destroy()
    b1= Button(app, text='delete', fg="purple1", command=suppr).pack()
    app.mainloop()
    J'essaie aussi de faire en sorte que mon bouton soit toujours visible mais inutilisable un fois que j'ai cliqué, j'ai le qu'il faut utiliser la fonction state='disabled' mais je ne vois pas où la mettre.
    Merci d'avance por votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par JeanEdouardKevin Voir le message
    j'essaie de supprimer mes boutons Tkinter mais ça ne fontionne pas
    Ok, votre code ne fonctionne pas mais il doit afficher un message d'erreur vous indiquant que NoneType n'a pas .destroy comme attribut ou quelque chose comme çà (message qui devrai vous être familier si vous avez pris le temps de débuter).
    Et ce message vous dit juste que "b1" étant None, ce n'est pas un Button!
    Dans votre code, il n'y a qu'une seule ligne qui assigne quelque chose à "b1", c'est là que çà se passe.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Débutant
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Débutant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Oui effectivement, c'est le message d'erreur que je recois, comment définir mon bouton comme quelque chose de non "None" ?

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Si on reprend le cheminement de votre code, on a:
    1. On créé un bouton b1 avec pour commande la fonction suppr()
    2. La fonction suppr() détruit un widget nommé b1

    Il n'y a pas de raison que la variable b1 dans la fonction suppr() soit votre bouton b1. Quand bien même ils ont le même nom. Il faut que vous passiez en paramètre de votre fonction le widget (le boutton) que vous voulez détruire ou désactiver.

    Prenons le cas où l'on désactive. Vous aviez vu juste, il faut configurer le bouton pour qu'il soit disabled:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from functools import partial
     
    def deactivate_button(button):
        button.configure(state='disabled')
     
    b1 = Button(app, text='delete', fg='purple1')
    b1.configure(command=partial(deactivate_button, b1))
    b1.pack()
    app.mainloop()
    Ici j'utilise partial. Pourquoi? Parce qu'il ne serait pas malin de faire autant de fonction pour désactiver qu'il y a de bouton. partial permet en gros de faire une fonction à partir d'une autre en lui figeant certains paramètres. Vous noterez que je commence par créer b1. Puis je rajoute la commande, car la commande à besoin de b1.

    Vous pouvez faire de même pour détruire un bouton (ou le cacher avec pack_forget). A noter, une fois désactivé ou détruit ou caché, ben vous ne pouvez plus le réactiver en cliquant dessus. Je dis ça, je ne dis rien.

    Je parle sous couvert de l'expertise de Wiztricks. Mon approche n'est pas nécessairement la meilleure.

    J

  5. #5
    Candidat au Club
    Homme Profil pro
    Débutant
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Débutant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai essayé votre méthode mais ça ne fonctionne pas, voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    from tkinter import *
    from functools import partial
    app= Tk()
    app.geometry("600x600+200+100")
    app["bg"] = "deep pink"
    app.title("BUTTONTEST")
    def desactivate_button():
        b1.configure(state='disabled')
        button.configure(state='disabled')
    b1= Button(app, text='delete', fg='purple1')
    b1.configure(command=partial(desactivate_button, b1))
    b1.pack()
     
     
     
    app.mainloop()
    Voici le message d'erreur:
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\vasco\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1702, in __call__
        return self.func(*args)
    TypeError: desactivate_button() takes 0 positional arguments but 1 was given

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Ben ouais, mais ce n'est pas ce que j'ai écrit. Le message d'erreur:

    TypeError: desactivate_button() takes 0 positional arguments but 1 was given
    Dit que votre fonction ne prend pas d'argument en entrée, or vous en fournissez un b1. Et puis, pourquoi cette deuxième ligne ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button.configure(state='disabled')
    J

Discussions similaires

  1. Problème avec la suppression des épingles
    Par Just-Soft dans le forum Power BI
    Réponses: 1
    Dernier message: 15/06/2017, 10h18
  2. [XL-2007] VBA | Problème avec la suppression des lignes
    Par Sebbt dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2015, 14h28
  3. POI rencontre un problème avec la suppression des onglets
    Par hicham_alaoui1 dans le forum Documents
    Réponses: 0
    Dernier message: 12/10/2008, 20h54
  4. problème avec la suppression des doublons dans arraylsit
    Par ulysse031 dans le forum Langage
    Réponses: 13
    Dernier message: 04/03/2007, 12h52

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