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

  FORUM HardWare.fr
  Programmation
  Python

  Pause dans programme pour faire une action

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pause dans programme pour faire une action

n°1831922
la ptite f​leur
Posté le 28-12-2008 à 14:38:47  profilanswer
 

Bonjour,
je suis en train de programmer une interface graphique avec Tkinter (en Python), et j'aimerai que le programme s'arrête le temps que l'utilisateur fasse une action (en particulier clique sur un bouton), puis recommence à partir de l'endroit où il s'était arrété.
J'ai essayé pas mal de choses (raw_input, time.pause en disant à l'utilisateur de se dépécher), mais toutes ces actions ne marchent pas parceque soit une fois que l'action est faite le programme ne revient pas où il s'était arrété, soit, dans le cas de time, on ne peut pas rentrer les paramètres : tout se gèle.
 
Si quelqu'un avait une solution, ça m'arrangerait bien.
Comme je ne suis pas sûr d'être très clair, je mets ci dessous le code avec l'endroit où je voudrais qu'il se mette en pause:
 
 

Code :
  1. from Tkinter import *
  2. def aeration(tap):
  3. neant = Canvas(tap, width =800, bg ='dark green')
  4. neant2 = Canvas(tap, width =800, bg ='dark green')
  5. neant.grid(row=0)
  6. neant2.grid(row=100)
  7. def boutonOK():
  8. n=int(nbrejoueur.get())
  9. listegens=[]
  10. tapis.destroy()
  11. tapis2 = Canvas(root, width =800, height =800, bg ='dark green')
  12. tapis2.pack(side = TOP, padx =0, pady =0)
  13. for i in xrange (1,n,1):
  14.  nomjoueur = StringVar()
  15.  potjoueur=IntVar()
  16.  def boutonOK2():
  17.   tapis2.destroy()
  18.   tapis3 = Canvas(root, width =800, height =800, bg ='dark green')
  19.   tapis3.pack(side = TOP, padx =0, pady =0)
  20.   joueur.nom=nomjoueur.get()
  21.   joueur.pot=potjoueur.get()
  22.  joueur= joueurs()
  23.  txtquestion=Label(tapis2,text='Rentrez les nom et pot du joueur n ' + str((i+1)) + ' puis appuyez sur Ok',fg='black',bg='dark green')
  24.  txtnomjoueur=Label(tapis2,text='le nom : ',fg='black',bg='dark green')
  25.  txtpotjoueur=Label(tapis2,text='le pot : ',fg='black',bg='dark green')
  26.  repondrepot = Entry(tapis2, textvariable=nomjoueur)
  27.  repondrenom = Entry(tapis2, textvariable=potjoueur)
  28.  bou1 = Button(tapis2,text='Ok',command=boutonOK2)
  29.  aeration(tapis2)
  30.  txtquestion.grid(row=1,column=2,columnspan =1)
  31.  txtnomjoueur.grid(row=2,column=1,sticky=E)
  32.  txtpotjoueur.grid(row=3,column=1,sticky=E)
  33.  repondrepot.grid(row=2,column=2)
  34.  repondrenom.grid(row=3,column=2)
  35.  bou1.grid(row=4,columnspan =1,column=2)
  36.                #la pause doit être ici pour que l'utilisateur clique sur le bouton OK,  que l'action boutonOK2 se réalise, et ensuite que la boucle reprenne à ce point.
  37. root=Tk()
  38. tapis = Canvas(root, width =800, height =800, bg ='dark green')
  39. txtnbrejoueur=Label(tapis,text='Rentrez le nombre de participants puis appuyez sur Ok',fg='black',bg='dark green')
  40. nbrejoueur = Entry(tapis)
  41. bou1 = Button(tapis,text='Ok',command=boutonOK)
  42. aeration(tapis)
  43. txtnbrejoueur.grid(row=1)
  44. nbrejoueur.grid(row=2)
  45. bou1.grid(row=3)
  46. tapis.pack(side = TOP, padx =0, pady =0)


 
Note :
J'ai aussi essayé de mettre une boucle
 

Code :
  1. nonvalide=True
  2. while nonvalide:
  3.         pass


 
 
avec nonvalide=False dans l'instruction boutonOK2, mais lorsque le compilateur va compiler, il va faire cette instruction avant toutes les autres! et donc, aucun graphisme n'apparit, et on ne peut pas cliquer sur ok. Est-ce que quelqu'un sait pourquoi?
 
Merci d'avance.

mood
Publicité
Posté le 28-12-2008 à 14:38:47  profilanswer
 

n°1831952
la ptite f​leur
Posté le 28-12-2008 à 17:55:45  profilanswer
 

c'est bon, j'ai finalement réussi à résoudre le problème.
Je note la solution au cas où qqun tomberait sur le même problème....
 
en fait il ne faut pas faire de boucle for, mais la remplacer par une fonction récursive qui imcrémente le i, et qui teste tant que i<n ...
 
à bientôt.


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

  Pause dans programme pour faire une action

 

Sujets relatifs
programme pour borne bleutoothProblème d'exec() d'un programme C++ sous PHP
Traduction de [IDL] en [Matlab] d'un petit programmeBesoin de votre aide pour la réalisation d'un programme
scrollbar - action a repeter tant que le bouton est enfoncé[C] Comment faire un getchar() sans pause après
Programme de TriMini programme avec boucles
petit programme batch 
Plus de sujets relatifs à : Pause dans programme pour faire une action


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