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 :

supression BUTTON TKinter


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Par défaut supression BUTTON TKinter
    Bonjour,

    j'ai crée sur ma page d'accueil des boutons. Est il possible de les supprimer après dans le programme car je change l'organisation visuelle de ma page en fonction des évènements. Pour les images, j'utilise :
    can1.delete(item)

    mais pour les buttons ? cela existe ou il faut redéfinir une nouvelle fenêtre ?

    François

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Tu peux utiliser la méthode destroy().
    Si tu souhaites juste déplacer des éléments, il vaut mieux utiliser grid_forget() ou pack_forget() qui ont pour effet de faire disparaitre le widget sans le détruire. Tu peux ensuite utiliser grid() ou pack() pour le réafficher à l'endroit voulu.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Par défaut
    quelle est la syntaxe exacte ?
    si dans mon programme j'ai :

    b1 = Button(accueil, text = '3 joueurs', command = j3)

    puis dans le ss prog évènement j'écris :

    def j3():
    global b1
    Button.destroy(b1)

    cela ne fait rien. Le bouton b1 reste affiché

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Je viens de tester, chez moi ça marche très bien.
    Voici le code que j'ai utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    from Tkinter import *
     
    def supprimer():
        bouton.destroy()
     
    fen = Tk()
    bouton = Button(fen, text='test')
    boutonDestroy = Button(fen, text='Destroy', command=supprimer)
    bouton.pack()
    boutonDestroy.pack()
    fen.mainloop()
    Si tu veux seulement déplacer des widgets, comme je disais plus haut, il vaut mieux utiliser pack_forget ou grid_forget comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    from Tkinter import *
     
    def bouger():
        bouton.pack_forget()
        bouton.pack(side=LEFT)
    fen = Tk()
    bouton = Button(fen, text='test')
    boutonDestroy = Button(fen, text='Bouger', command=bouger)
    bouton.pack()
    boutonDestroy.pack()
    fen.mainloop()

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Par défaut
    J'ai testé ton code. Effectivement çà marche. Par contre, rien à faire avec mon programme.

    from Tkinter import *

    accueil = Tk()

    def j3():
    b1.destroy()

    b1 = Button(accueil, text = '3 joueurs', command = j3, padx = 40, pady = 20).pack(side = LEFT)
    b2 = Button(accueil, text = 'Quitter', command = accueil.quit, padx = 40, pady = 20).pack(side = RIGHT)

    accueil.mainloop()
    accueil.destroy()

    il ne m'efface rien du tout je ne comprends pas pourquoi !

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    C'est normal, si tu fais b1 = Button(accueil, text = '3 joueurs', command = j3, padx = 40, pady = 20).pack(side = LEFT), b1 vaut None. Tu essayes donc de supprimer un None. Cette syntaxe est a utiliser seulement si tu n'as besoin de récupérer l'instance, sinon il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bouton = Button(fen, text='Destroy', command=supprimer)
    bouton.pack()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tkinter] Button, lambda et boucle : effet indesirable
    Par KINENVEU dans le forum Tkinter
    Réponses: 6
    Dernier message: 24/09/2011, 08h56
  2. [Tkinter] push-pull button
    Par pfeuh dans le forum Tkinter
    Réponses: 1
    Dernier message: 06/05/2010, 11h25
  3. Tkinter.Button : passer et récupérer des valeurs
    Par Loïc B. dans le forum Tkinter
    Réponses: 4
    Dernier message: 20/11/2008, 20h48
  4. Tkinter: Button sur Image
    Par xEndLe dans le forum Tkinter
    Réponses: 1
    Dernier message: 04/04/2007, 19h39
  5. [Tkinter] Button connecté, avec ou sans paramètres??
    Par Sunsawe dans le forum Tkinter
    Réponses: 3
    Dernier message: 12/03/2006, 11h55

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