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 :

suppression widget sur checkbox


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    www.belleskmer.com
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations professionnelles :
    Activité : www.belleskmer.com

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut suppression widget sur checkbox
    bonjour
    je cherche à dessiner des widgets selon le contexte

    j'arrive a la creation et selon l'endroit ou ils se trouvent dans le programme je n'arrive finalement pas a récuperer l'ID

    en essayant de les printer j'obtiens : None None None

    j'ai bien dans l'idée que frame pourrait me sauver mais je n'ai pas encore compris la nuance

    je vous ai livré le code avec le strict minimum
    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
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    import pygame
    import time
    import pygame.midi
    from  tkinter import *
    import random
     
     
    touchenote= {}
    octave = 1
    x = 1
    decalnote = 60
    intpourcent = 0
    bonne = 0
    mauvaise = 0
    note = 0
    playing = []
     
    testdictee = 0
    labelmessage = 0
    blackornot = 0
    pourcentmessage = 0
     
     
     
    def end():
           pygame.quit()
     
     
    def Clic (event):
        global note,testdictee,min,max,bonne,mauvaise, intpourcent
        X = event.x
        Y = event.y
     
    def piano ():
        global labelmessage,blackornot,pourcentmessage,w
        print ( labelmessage,blackornot,pourcentmessage)
        w.delete(labelmessage)
        w.delete(blackornot)
        w.delete(pourcentmessage)
        fen1.update()
        pass
     
    def dictee():
        global labelmessage,blackornot,pourcentmessage,w
        labelmessage = Label (fen1,  textvariable = message).grid(row=2,column=15)
        blackornot = Checkbutton(fen1,text='noires',variable=black).grid(row=2,column=10)
        pourcentmessage = Label (fen1,  textvariable = pourcent).grid(row=2,column=18)
        print (labelmessage,blackornot,pourcentmessage)
        fen1.update()
     
     
    def Relache (event):
        pass
     
     
    def silence():
        pass
     
    fen1 = Tk()
    radio = StringVar()
    radio.set('piano')
    message = StringVar()
    message.set('message')
    black = IntVar()
    black.set(0)
    pourcent = StringVar()
    message.set('message')
    w =Canvas(fen1,width=758,height= 150,bg="white")
    w.bind('<Button-1>',Clic)
    w.bind('<Button-3>',Clic)
    w.bind('<ButtonRelease-1>',Relache)
    w.bind('<ButtonRelease-2>',silence)
    piano = Radiobutton(fen1, text = 'piano', variable=radio,value = 'piano', command=piano).grid(row=2,column=0)
    dictee = Radiobutton(fen1, text = 'dictée', variable=radio,value = 'dictee', command=dictee).grid(row=2,column=4)
    fen1.mainloop()
    merci pour vos réponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par menthol34 Voir le message
    bonjour
    je cherche à dessiner des widgets selon le contexte

    j'arrive a la creation et selon l'endroit ou ils se trouvent dans le programme je n'arrive finalement pas a récuperer l'ID

    en essayant de les printer j'obtiens : None None None

    j'ai bien dans l'idée que frame pourrait me sauver mais je n'ai pas encore compris la nuance

    je vous ai livré le code avec le strict minimum
    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
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    import pygame
    import time
    import pygame.midi
    from  tkinter import *
    import random
     
     
    touchenote= {}
    octave = 1
    x = 1
    decalnote = 60
    intpourcent = 0
    bonne = 0
    mauvaise = 0
    note = 0
    playing = []
     
    testdictee = 0
    labelmessage = 0
    blackornot = 0
    pourcentmessage = 0
     
     
     
    def end():
           pygame.quit()
     
     
    def Clic (event):
        global note,testdictee,min,max,bonne,mauvaise, intpourcent
        X = event.x
        Y = event.y
     
    def piano ():
        global labelmessage,blackornot,pourcentmessage,w
        print ( labelmessage,blackornot,pourcentmessage)
        w.delete(labelmessage)
        w.delete(blackornot)
        w.delete(pourcentmessage)
        fen1.update()
        pass
     
    def dictee():
        global labelmessage,blackornot,pourcentmessage,w
        labelmessage = Label (fen1,  textvariable = message).grid(row=2,column=15)
        blackornot = Checkbutton(fen1,text='noires',variable=black).grid(row=2,column=10)
        pourcentmessage = Label (fen1,  textvariable = pourcent).grid(row=2,column=18)
        print (labelmessage,blackornot,pourcentmessage)
        fen1.update()
     
     
    def Relache (event):
        pass
     
     
    def silence():
        pass
     
    fen1 = Tk()
    radio = StringVar()
    radio.set('piano')
    message = StringVar()
    message.set('message')
    black = IntVar()
    black.set(0)
    pourcent = StringVar()
    message.set('message')
    w =Canvas(fen1,width=758,height= 150,bg="white")
    w.bind('<Button-1>',Clic)
    w.bind('<Button-3>',Clic)
    w.bind('<ButtonRelease-1>',Relache)
    w.bind('<ButtonRelease-2>',silence)
    piano = Radiobutton(fen1, text = 'piano', variable=radio,value = 'piano', command=piano).grid(row=2,column=0)
    dictee = Radiobutton(fen1, text = 'dictée', variable=radio,value = 'dictee', command=dictee).grid(row=2,column=4)
    fen1.mainloop()
    merci pour vos réponses
    Bonjour,

    Plusieurs choses :

    1. vous confondez "dessiner" un widget avec "afficher temporairement" un widget pour pouvoir le masquer de l'affichage ultérieurement ;

    2. vous confondez les canvasItems avec les autres widgets Tkinter ;

    3. vous utilisez des noms de variables qui risquent d'entrer en conflit avec des noms de fonctions e.g. widget piano et fonction piano(), widget dictee et dictee() ;

    4. vous nommez un canvas w qui signifie "widget" en notation générale (pas le plus simple à tracer lors d'un débogage) ;

    Bref, votre code battait un peu de l'aile, je me suis permis de le rectifier :

    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
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    import time
    import random
    from tkinter import *
    import pygame
    import pygame.midi
     
     
    touchenote = {}
    octave = 1
    x = 1
    decalnote = 60
    intpourcent = 0
    bonne = 0
    mauvaise = 0
    note = 0
    playing = []
     
     
    def end ():
           pygame.quit()
     
     
    def clic (event):
        global note, testdictee, min, max, bonne, mauvaise, intpourcent
        X = event.x
        Y = event.y
     
     
    def relache (event):
        pass
     
     
    def silence (event):
        pass
     
     
    def set_piano ():
        "affiche les options de piano"
        labelmessage.grid_remove()
        blackornot.grid_remove()
        pourcentmessage.grid_remove()
     
     
    def set_dictee ():
        "affiche les options de dictée"
        labelmessage.grid(row=1, column=2, padx=5)
        blackornot.grid(row=1, column=3, padx=5)
        pourcentmessage.grid(row=1, column=4, padx=5)
     
     
    fen1 = Tk()
     
    fen1.title("Piano dictée")
     
    radio = StringVar()
    radio.set('piano')
     
    message = StringVar()
    message.set('message')
     
    black = IntVar()
    black.set(0)
     
    pourcent = StringVar()
    pourcent.set("100%")    # test affichage
     
    canvas = Canvas(fen1, width=758, height=150, bg="white")
    canvas.grid(row=0, column=0, columnspan=10, padx=5, pady=5)
     
    canvas.bind('<Button-1>', clic)
    canvas.bind('<Button-3>', clic)
    canvas.bind('<ButtonRelease-1>', relache)
    canvas.bind('<ButtonRelease-2>', silence)
     
    piano = Radiobutton(
     
        fen1, text='piano', variable=radio, value='piano', command=set_piano
    )
     
    piano.grid(row=1, column=0, padx=5)
     
    dictee = Radiobutton(
     
        fen1, text='dictée', variable=radio, value='dictee', command=set_dictee
    )
     
    dictee.grid(row=1, column=1, padx=5)
     
    labelmessage = Label(fen1, textvariable=message)
     
    blackornot = Checkbutton(fen1, text='noires', variable=black)
     
    pourcentmessage = Label(fen1, textvariable=pourcent)
     
    Button(
     
        fen1, text="Quitter", command=fen1.quit
     
    ).grid(row=1, column=9, sticky=E, padx=5, pady=5)
     
    fen1.columnconfigure(9, weight=1)
     
    fen1.mainloop()
    Mais SVP lisez attentivement la doc :

    http://infohost.nmt.edu/tcc/help/pub...web/index.html

    http://effbot.org/tkinterbook/grid.htm

    http://effbot.org/tkinterbook/pack.htm

    @+.

  3. #3
    Membre du Club
    www.belleskmer.com
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations professionnelles :
    Activité : www.belleskmer.com

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    merci pour la réponse


    je vais relire plusieurs fois tes conseils et j'ai deja lu plusieurs choses bien sensés dans tes propos

    j'avais deja trouvé deux de tes liens mais pas le premier que j'étudierai sérieusement

    merci encore

    cordialement

  4. #4
    Membre du Club
    www.belleskmer.com
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations professionnelles :
    Activité : www.belleskmer.com

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    bonjour
    encore merci

    Je suis un peu comme toi, je dis ce qui me plait pas et j'ai du mal à dire ce qui va bien

    j'ai relu le code que tu m'as donné et la grande nuance que je n'avais pas saisi est que ce que j'ai l'air de confondre entre widgets et widgets items, en tout cas tout ce qui est cases a cocher, labels autres boutons radio sont créées dans le mainloop mais pas placés

    ensuite les appels dans les fonctions respectives placent les objets a la demande

    Quand a la doc que tu proposes, je reconnais que je maitrise à peu pres l'anglais courant mais en technique quelques nuances m'échappent

    merci

    cordialement

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par menthol34 Voir le message
    bonjour
    encore merci

    Je suis un peu comme toi, je dis ce qui me plait pas et j'ai du mal à dire ce qui va bien
    Bonjour,

    Désolé, mais je ne dis pas ce qui ne me plaît pas : vous demandez de l'aide, j'analyse votre code et je fais ressortir les points de confusion, ni plus ni moins.

    Je n'ai pas à porter de jugement de valeur sur la qualité de votre code, seulement une évaluation technique.

    Quand je vous dis que vous confondez canvasItems avec les autres widgets Tkinter, c'est que votre code fait clairement ressortir cette confusion, ce n'est pas moi qui décrète arbitrairement.

    Votre code parle pour vous.

    j'ai relu le code que tu m'as donné et la grande nuance que je n'avais pas saisi est que ce que j'ai l'air de confondre entre widgets et widgets items, en tout cas tout ce qui est cases a cocher, labels autres boutons radio sont créées dans le mainloop mais pas placés

    ensuite les appels dans les fonctions respectives placent les objets a la demande

    Quand a la doc que tu proposes, je reconnais que je maitrise à peu pres l'anglais courant mais en technique quelques nuances m'échappent

    merci

    cordialement
    Vous pouvez même tester et garder pour vous le code que je vous ai fourni, ce serait plus simple.

    Je n'ai pas tout compris de ce que vous avez écrit.

    Mais si vous vous êtes senti blessé par mes remarques, sachez que ce n'était pas voulu et je m'en excuse par avance.

    @+.

  6. #6
    Membre du Club
    www.belleskmer.com
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations professionnelles :
    Activité : www.belleskmer.com

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    bonsoir

    no problemes

    le ton me plait et je te remercie encore pour tes conseils

    j'ai juste souligné que tu procédais comme moi, tout va bien

    merci encore

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

Discussions similaires

  1. [C#] Reload sur Checkbox ?
    Par annalady dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/12/2005, 18h45
  2. onChange sur Checkbox prob IE vs FireFox
    Par Teufboy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/11/2005, 09h02
  3. [C#] [FTP] Envoi et suppression fichier sur ftp NON ANONYME!
    Par djsbens dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/03/2005, 10h20
  4. Problème sur CHECKBOX
    Par dede92 dans le forum Windows
    Réponses: 6
    Dernier message: 22/02/2005, 10h48
  5. [C#] suppression handler sur ImageButton
    Par jld33 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/01/2004, 09h50

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