Tkinter : Une variable de contrôle ne se met pas à jour

Résolu
Fabio -  
 gudu -
Bonjour,
J'essaie de créer un programme qui donne un aperçu d'une couleur à base de curseurs modifiable.
Le problème, c'est que la couleur ne se met pas à jour.
Voici mon code :
#!/usr/bin/python
# -*- coding: utf-8 -*

import tkinter

root = tkinter.Tk()

rouge = tkinter.Scale(root, orient='horizontal', from_=0, to=250,resolution=1, tickinterval=25, length=500,label='Rouge')
rouge.pack()
vert = tkinter.Scale(root, orient='horizontal', from_=0, to=250,resolution=1, tickinterval=25, length=500,label='Vert')
vert.pack()
bleu = tkinter.Scale(root, orient='horizontal', from_=0, to=250,resolution=1, tickinterval=25, length=500,label='Bleu')
bleu.pack()

vrouge = tkinter.IntVar(rouge)
vvert = tkinter.IntVar(vert)
vbleu = tkinter.IntVar(bleu)

couleur = "#" + str(hex(vrouge.get()))[0] + str(hex(vrouge.get()))[2] + str(hex(vvert.get()))[0] + str(hex(vvert.get()))[2] + str(hex(vbleu.get()))[0] + str(hex(vbleu.get()))[2]

labelcouleur = tkinter.Label(text=couleur, fg="white", bg=couleur)
labelcouleur.pack()

root.title('Couleurs')
root.mainloop()


J'espère que vous pouvez m'aider,
Merci.

1 réponse

  1. gudu
     
    Les vars se donnent en argument de Scale dans l'option variable.

    Et pour t'éviter de demander ensuite comment faire la mise à jour automatique à chaque changement, je te montre l'exemple qui va bien.

    #!/usr/bin/python
    # -*- coding: utf-8 -*
    
    import tkinter
    
    root = tkinter.Tk()
    
    
    vrouge = tkinter.IntVar()
    vvert = tkinter.IntVar()
    vbleu = tkinter.IntVar()
    
    def update(v):
        color = "#"
        for var in (vrouge, vvert, vbleu):
            color += hex(var.get()).split('x')[1].zfill(2)
        labelcouleur.configure(text=color, bg=color) 
    
    rouge = tkinter.Scale(root, variable=vrouge, orient='horizontal', from_=0, to=255,resolution=1, tickinterval=25, length=500,label='Rouge', command=update)
    rouge.pack()
    vert = tkinter.Scale(root, variable=vvert, orient='horizontal', from_=0, to=255,resolution=1, tickinterval=25, length=500,label='Vert', command=update)
    vert.pack()
    bleu = tkinter.Scale(root, variable=vbleu, orient='horizontal', from_=0, to=255,resolution=1, tickinterval=25, length=500,label='Bleu', command=update)
    bleu.pack()
    
    labelcouleur = tkinter.Label(text='', fg="white", bg='#000000')
    labelcouleur.pack()
    
    root.title('Couleurs')
    root.mainloop()


    Il te reste plus qu'à trouver une solution pour inverser le contraste pour que le texte du label reste toujours lisible ;)
    0