2017-10-07 6 views
-1

i ont un problème avec ce programme, la commande ne fonctionne pas lorsque je presse le boutonparamètre de commande Bouton ne fonctionne pas

from Tkinter import * 
import random 
MenuP = Tk() 
MenuP.geometry("540x960") 

def Respuesta1(a): 
    if a == 1: 
     resp = random.randint(0,4) 
     if resp == 0: 
      r = 3 
     elif resp == 1 or resp == 2: 
      r = 5 
     else: 
      r = 7 
    if a == 2: 
     resp = random.randint(0,4) 
     if resp == 0: 
      r = 1 
     elif resp == 3 or resp == 2: 
      r = 5 
     else: 
      r = 3 
    print r 

C1 = Button(MenuP, text = "1", command = Respuesta1(1)).place(x = 100,y = 100) 
C2 = Button(MenuP, text = "2", command = Respuesta1(2)).place(x = 300,y = 100) 
MenuP.mainloop() 

ce qui se passe est que les impressions numériques avant que j'appuie sur le bouton, lorsque le programme départs. Si quelqu'un sait quelque chose, répondez s'il vous plaît. Merci

Répondre

1

Vous devez modifier les lignes suivantes:

C1 = Button(MenuP, text = "1", command = Respuesta1(1)).place(x = 100,y = 100) 
C2 = Button(MenuP, text = "2", command = Respuesta1(2)).place(x = 300,y = 100) 

à ceci:

C1 = Button(MenuP, text = "1", command = lambda: Respuesta1(1)) 
C1.place(x = 100,y = 100) 
C2 = Button(MenuP, text = "2", command = lambda: Respuesta1(2)) 
C2.place(x = 300,y = 100) 

En utilisant une fonction lambda vous pouvez passer la variable souhaitée à la fonction, sans l'appeler au début. Il est appelé dès que Tkinter évalue le contenu de ce que vous passez comme command.

+0

Merci beaucoup maintenant fonctionne parfaitement !! – MattZ