Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1408 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [Python3] tkinter: Scale Comment faire passer un argument

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Python3] tkinter: Scale Comment faire passer un argument

n°1971614
the marsha​ll
Posté le 06-03-2010 à 17:12:35  profilanswer
 

Hello,
 
ça fait un petit moment que je met tranquillement à python et je commence à toucher à tkinter pour faire des interfaces graphiques.  
 
J'arrive vers la fin du livre "Head First Programming: A Learner’s Guide to Programming Using the Python Language" (que je trouve vraiment un peu léger au niveau des explications du langages python soit dit en passant...) où il y a un exemple avec un mixer audio.
 
Je me suis un peu amuser à modifier mon programme de base pour lui rajouter plusieurs piste (track) séparé. Chaque piste à un élément Scale qui doit permettre de régler le volume de la piste en question et une checkbox qui permet de jouer ou stopper la piste en question.
 
Mon problème c'est que l'argument "command=" qui est définie pour ces deux éléments (scale et checkbox) ne permet pas de faire passer des arguments.
En fait j'ai réussit à trouver une solution sur le net pour faire passer un argument pour ma checkbox:
 
command= lambda i=number_of_track: flip_it(i)
 
Ceci me permet de passer l'argument "number_of_track" à ma fonction flip_it. (Je comprend pas très bien le fonctionnement de lambda à vrai dire mais bon...) Ceci fonctionne sans problème avec ma checkbox.
 
Par contre la même solution ne fonctionne pas pour l'élément scale. En fait l'élément scale fournit de base un argument qui est ici la variable volume. Il s'agit de la valeur de l'élément scale. Par contre je ne sais pas comment faire pour faire passer en plus (ou à la place) l'argument number_of_track.
Or il faut que je sache à quelle piste l'élément scale en question correspond.  
 

Code :
  1. #Add gui element flicker + volume
  2. global volume_scale
  3. volume_scale[number_of_track] = Scale(app, variable = volume[number_of_track], from_ = 0.0, to = 1.0, command= lambda i=number_of_track: change_volume(i), resolution = 0.01, label = "Volume", orient = HORIZONTAL)
  4. volume_scale[number_of_track].grid(row = number_of_track - 1, column = 2)
  5. global check_button
  6. checkbutton[number_of_track] = Checkbutton(app, variable = flipper[number_of_track], command= lambda i=number_of_track: flip_it(i), text = "Play?" )
  7. checkbutton[number_of_track].grid(row = number_of_track - 1, column = 1)


 
 
Je peux mettre tout le code si ça peut aider ou si ça intéresse qqn...
 
Merci


Message édité par the marshall le 06-03-2010 à 17:13:58
mood
Publicité
Posté le 06-03-2010 à 17:12:35  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [Python3] tkinter: Scale Comment faire passer un argument

 

Sujets relatifs
Argument -- dans un shell UNIX[WCF] Comment passer un objet en paramètre ?
Se passer de javascript sur son sitepasser de Frontpage à ... un autre logi ???
[VBA]- passer la ligne en dessous[Resolu] Passage d'argument a un thread
Passer autre chose qu'un text en argument à POST ?tkinter et parcourir / excel
[VBA] Passer d'une TextBox à une autre avec TAB 
Plus de sujets relatifs à : [Python3] tkinter: Scale Comment faire passer un argument


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR