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 :

Annuler l'action d'un bouton 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
    Août 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 67
    Par défaut Annuler l'action d'un bouton Tkinter
    Bonjour à tous,

    J'aimerai afficher ou non une grille dans la fenêtre ci dessous:

    Nom : 2020_05_08_17_06_08_Heating_Draw.png
Affichages : 1224
Taille : 26,2 Ko

    Voici une partie du code que j'utilise:

    Code python : 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
    17
    18
    19
    20
     
     
    def print_grid():
        for x in range(25, width_w - 25, 15):
            for y in range(25, height_w - 25, 15):
                canvas.create_rectangle(x, y, x + 15, y + 15,
                                        width=2, outline='grey',
                                        fill='white',
                                        tag='square')
     
    Frame1 = Frame(root, borderwidth=3, relief=GROOVE)
    Frame1.pack(side='top', padx=10, pady=10)
     
    Label(Frame1, text="Option de la grille").pack(padx=10,pady=10)
    Button(Frame1, text="Afficher", fg='navy', command=print_grid).pack(side=LEFT, padx=10, pady=10)
    Button(Frame1, text="Effacer", fg='navy', command=print_grid).pack(side=RIGHT, padx=10, pady=10)
     
    # Association clic/action
    canvas.bind("<Button-1>", action_clic_souris)
    root.mainloop()

    Je ne sais pas comment faire pour que mon deuxième bouton annule l'action du premier ? Est ce que quelqu'un sait m'aider ?

    Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    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 754
    Par défaut
    Salut,

    Citation Envoyé par maxstilde Voir le message
    Je ne sais pas comment faire pour que mon deuxième bouton annule l'action du premier ?
    Je ne comprends pas trop ce que vous cherchez à faire si print_grid crée des rectangles dans un canvas, "annuler", c'est, à priori, juste les supprimer. (et la question pourrait être comment supprimer des items d'un Canvas).

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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 67
    Par défaut
    Voilà c'est ça, comment supprimer un item du canvas ?

    Je sais que ma ligne de code ci dessous en fausse, il faut que dans command=, ça supprime l'action du premier ou qui supprime tout simplement juste la grille et pas autre chose avec après il y aura un plan, des tracés, etc.

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    Button(Frame1, text="Effacer", fg='navy', command=print_grid).pack(side=RIGHT, padx=10, pady=10)

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    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 754
    Par défaut
    Salut,

    Citation Envoyé par maxstilde Voir le message
    comment supprimer un item du canvas ?
    Pour supprimer un item du Canvas, c'est Canvas.delete

    avec après il y aura un plan, des tracés, etc.
    Vous allez bien vous amuser! Prenez quand même le temps de lire la documentation du Canvas car si çà sait faire plein de choses, c'est pas si intuitif que çà.

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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 67
    Par défaut
    J'ai essayer ceci qui pour moi devrait marché mais sans succès... Code complet:

    Code python : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    from tkinter import *
     
    # Création et paramètre de la fenêtre
    root = Tk()
    width_w = 1200
    height_w = 800
     
    canvas = Canvas(root, width=width_w, height=height_w, background="white")
    canvas.pack(side=RIGHT, padx=5, pady=5)
    root.resizable(width=False, height=False)
    root.title('Heating Draw')
     
    def action_clic_souris(event):
        canvas.focus_set()
        x = event.x
        y = event.y
        i = x // 15 * 15 - 5
        j = y // 15 * 15 - 5
        canvas.create_rectangle(i, j, i + 15, j + 15, fill="green", tag="rec")
        # Création du fichier qui stock les valeurs
        with open("valeur_x_y.txt", "a+") as file:
            file.write(str(i))
            file.write(", ")
            file.write(str(j))
            file.write("\n")
            file.close()
        return
     
    def print_grid():
        if root.find_withtag('square'):
            delete('square')
        else:
            for x in range(25, width_w - 25, 15):
                for y in range(25, height_w - 25, 15):
                    canvas.create_rectangle(x, y, x + 15, y + 15,
                                            width=2, outline='grey',
                                            fill='white',
                                            tag="square")
     
    def delete(MonTag):
        root.delete(root.find_withtag(MonTag))
     
    Frame1 = Frame(root, borderwidth=3, relief=GROOVE)
    Frame1.pack(side='top', padx=10, pady=10)
    Label(Frame1, text="Option de la grille").pack(padx=10,pady=10)
     
    Button(Frame1, text="Afficher", fg='navy', command=print_grid).pack(side='left', padx=10, pady=10)
     
    # Association clic/action
    canvas.bind("<Button-1>", action_clic_souris)
    root.mainloop()

    Pycharm m'affiche le message d'erreur suivant quand je clic sur Afficher

    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Users\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
    File "C:/Users/PycharmProjects/Projet CS/main.py", line 30, in print_grid
    if root.find_withtag('square'):
    File "C:\Users\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 2345, in __getattr__
    return getattr(self.tk, attr)
    AttributeError: '_tkinter.tkapp' object has no attribute 'find_withtag'

  6. #6
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonsoir,
    La méthode find_withtag() s'applique sur le canvas...(pas sur root)

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/11/2019, 20h37
  2. Annulation d'une action + desactivation de boutons
    Par msarahm dans le forum Débuter
    Réponses: 1
    Dernier message: 05/12/2008, 22h51
  3. action d'un bouton
    Par Homer dans le forum ASP
    Réponses: 15
    Dernier message: 04/02/2005, 18h26
  4. [FLASH MX PRO] Action répétée sur bouton
    Par dens63 dans le forum Flash
    Réponses: 4
    Dernier message: 15/04/2004, 14h16
  5. [Flash MX] Action sur un bouton
    Par WriteLN dans le forum Flash
    Réponses: 9
    Dernier message: 20/10/2003, 14h01

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