[python/Tk] probleme avec le widget Scale
Fermé
Benoit de Longlée
-
19 déc. 2006 à 14:53
Obeet Messages postés 1766 Date d'inscription mercredi 13 octobre 2004 Statut Modérateur Dernière intervention 17 novembre 2010 - 21 déc. 2006 à 08:24
Obeet Messages postés 1766 Date d'inscription mercredi 13 octobre 2004 Statut Modérateur Dernière intervention 17 novembre 2010 - 21 déc. 2006 à 08:24
A voir également:
- [python/Tk] probleme avec le widget Scale
- Widget iphone - Guide
- Widget windows 11 - Guide
- Widget c'est quoi - Guide
- Citizen code python avis - Accueil - Outils
- Réinstaller widget windows 11 - Guide
6 réponses
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
19 déc. 2006 à 16:07
19 déc. 2006 à 16:07
PS: Pour la suite, poste ton code Python entre deux balises < code> sinon ça perd l'identation.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
19 déc. 2006 à 16:12
19 déc. 2006 à 16:12
Remplace: def gammaLinker(self):
par: def gammaLinker(self,value):
Quand à la création du Scale(), en ajoutant orient='horizontal' ça marche très bien. :-)
par: def gammaLinker(self,value):
Quand à la création du Scale(), en ajoutant orient='horizontal' ça marche très bien. :-)
merci beaucoup pour ces infos.
c'est tout de meme étrange car je n'ai pas trouvé cette syntaxe dans les quelques exemples que j'ai trouvé (notemment un TkinterDemo.py)
un dernier probleme persiste, dasn le code qui suit je n'ai pas trouvé d'autre méthode que de dupliquer mes procedure "gammaSetter", je n'arrive pas a lui envoyer une valeur en argument...
auriez vous une idée svp ?
c'est tout de meme étrange car je n'ai pas trouvé cette syntaxe dans les quelques exemples que j'ai trouvé (notemment un TkinterDemo.py)
un dernier probleme persiste, dasn le code qui suit je n'ai pas trouvé d'autre méthode que de dupliquer mes procedure "gammaSetter", je n'arrive pas a lui envoyer une valeur en argument...
auriez vous une idée svp ?
#!/usr/bin/python import Tkinter from os import system class gamma: def __init__(self, root): self.root = root self.gammaValue = Tkinter.DoubleVar() ; self.gammaValue.set(1.0) self.initialisation() def initialisation(self): Tkinter.Scale(self.root, from_=0, to=3, resolution=0.01, length=400, sliderlength=60, orient = 'horizontal', variable=self.gammaValue, showvalue = 0, command = self.gammaLinker).grid(row=1, columnspan=6) Tkinter.Button(self.root, width=8, text='0.5', command = self.gammaSetter05).grid(row=2, column=1) Tkinter.Button(self.root, width=8, text='Reset', command = self.gammaSetter10).grid(row=2, column=2) Tkinter.Button(self.root, width=8, text='1.5', command = self.gammaSetter15).grid(row=2, column=3) Tkinter.Button(self.root, width=8, text='2.0', command = self.gammaSetter2).grid(row=2, column=4) Tkinter.Label(self.root, width=8, textvariable = self.gammaValue).grid(row=2, column=5) def gammaLinker(self, value): valeur = str(self.gammaValue.get()) system('xgamma -gamma '+valeur) def gammaSetter05(self): self.gammaValue.set(0.5) system('xgamma -gamma 0.5') def gammaSetter10(self): self.gammaValue.set(1.0) system('xgamma -gamma 1.0') def gammaSetter15(self): self.gammaValue.set(1.5) system('xgamma -gamma 1.5') def gammaSetter2(self): self.gammaValue.set(2.0) system('xgamma -gamma 2.0') def main(): root = Tkinter.Tk() root.title('Gamma Slider') app = gamma(root) root.mainloop() if __name__ == "__main__": main()
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
20 déc. 2006 à 09:36
20 déc. 2006 à 09:36
je n'ai pas trouvé d'autre méthode que de dupliquer mes procedure "gammaSetter",
Dans l'immédiat je ne vois pas non plus comment faire, mais je pense que c'est faisable.
Dans l'immédiat je ne vois pas non plus comment faire, mais je pense que c'est faisable.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
20 déc. 2006 à 09:42
20 déc. 2006 à 09:42
Salut,
Y'a un truc que je ne comprend pas, quel est le problème si tu fais une def gamaSetter(self,value) ?
Y'a un truc que je ne comprend pas, quel est le problème si tu fais une def gamaSetter(self,value) ?
si je fais ma procedure de la maniere suivante:
et si mes boutons ont comme command:
il ne se passe rien.. enfin presque, au lancement du script la valeur se set a 0.5 au lieu de 1 et c'est tout.
les boutons ne n'agissent pas du tout. d'ailleurs je ne comprend pas bien pourquoi.
def gammaSetter(self, value): self.gammaValue.set(value) system('xgamma -gamma '+str(value))
et si mes boutons ont comme command:
self.gammaSetter(0.5) self.gammaSetter(1) etc...
il ne se passe rien.. enfin presque, au lancement du script la valeur se set a 0.5 au lieu de 1 et c'est tout.
les boutons ne n'agissent pas du tout. d'ailleurs je ne comprend pas bien pourquoi.
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
20 déc. 2006 à 16:07
20 déc. 2006 à 16:07
Logique, il execute la fonction directement et non lors du "pressage" du bouton.
Il faut utiliser un lambda:
Il faut utiliser un lambda:
Tkinter.Button(self.root, width=8, text='0.5', command = lambda val=0.5: self.gammaSetter(val)).grid(row=2, column=1) Tkinter.Button(self.root, width=8, text='Reset', command = lambda val=1.0: self.gammaSetter(val)).grid(row=2, column=2) Tkinter.Button(self.root, width=8, text='1.5', command =lambda val=1.5: self.gammaSetter(val)).grid(row=2, column=3) Tkinter.Button(self.root, width=8, text='2.0', command =lambda val=2.0: self.gammaSetter(val)).grid(row=2, column=4)
Merci beaucoup pour l'info ça marche nikel !
En fait je suis un peu surpris de ce concept 'lambda'. dans les autres languages script que j'utilise je n'ai jamais vu un truc comme ça (je ne suis pas developpeur... vous l'aurez compris)
je mets le code definitif pour les intéressés :
En fait je suis un peu surpris de ce concept 'lambda'. dans les autres languages script que j'utilise je n'ai jamais vu un truc comme ça (je ne suis pas developpeur... vous l'aurez compris)
je mets le code definitif pour les intéressés :
class gamma: def __init__(self, root): self.root = root self.gammaValue = Tkinter.DoubleVar() ; self.gammaValue.set(1.0) self.initialisation() def initialisation(self): Tkinter.Scale(self.root, from_=0, to=3, resolution=0.01, length=100, sliderlength=30, orient = 'horizontal', variable=self.gammaValue, showvalue = 0, command = self.gammaLinker).grid(row=1, columnspan=6, sticky = 'EW') Tkinter.Button(self.root, width=6, text='0.5', command = lambda val = 0.5: self.gammaSetter(val)).grid(row=2, column=1, sticky = 'EW') Tkinter.Button(self.root, width=6, text='Reset', command = lambda val = 1: self.gammaSetter(val)).grid(row=2, column=2, sticky = 'EW') Tkinter.Button(self.root, width=6, text='1.5', command = lambda val = 1.5: self.gammaSetter(val)).grid(row=2, column=3, sticky = 'EW') Tkinter.Button(self.root, width=6, text='2.0', command = lambda val = 2: self.gammaSetter(val)).grid(row=2, column=4, sticky = 'EW') saisie = Tkinter.Entry(self.root, width=6, textvariable = self.gammaValue) saisie.grid(row=2, column=5, sticky = 'EW', padx = 5) saisie.bind("<Return>", self.gammaLinker) for i in range(4): self.root.grid_columnconfigure(i+1,weight=1) self.root.resizable(True,False) def gammaLinker(self, value): valeur = str(self.gammaValue.get()) system('xgamma -gamma '+valeur) def gammaSetter(self, value): self.gammaValue.set(value) system('xgamma -gamma '+str(value)) def main(): root = Tkinter.Tk() root.title('Gamma Slider') app = gamma(root) root.mainloop() if __name__ == "__main__": main()
Obeet
Messages postés
1766
Date d'inscription
mercredi 13 octobre 2004
Statut
Modérateur
Dernière intervention
17 novembre 2010
30
>
Benoit de Longlée
21 déc. 2006 à 08:24
21 déc. 2006 à 08:24
De rien :)
En même temps je dis "logique" mais j'ai du cherché aussi ;)
En même temps je dis "logique" mais j'ai du cherché aussi ;)