Signaler

Tkinter : Une variable de contrôle ne se met pas à jour [Résolu]

Posez votre question Fabio - Dernière réponse le 25 mai 2017 à 22:36 par 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.
Utile
+0
plus moins
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 ;)
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !