2009-07-20 5 views
1

Ceci est mon code:bouton Tkinter bind

import Tkinter 
from Tkconstants import * 

tk = Tkinter.Tk() 


class MyApp: 

    def __init__(self,parent): 

     self.frame = Tkinter.Frame(tk,relief=RIDGE,borderwidth=2) 
     self.frame.pack() 

     self.message = Tkinter.Message(tk,text="Symbol Disolay") 

     label=Tkinter.Label(self.frame,text="Is Symbol Displayed") 
     label.pack() 

     self.button1=Tkinter.Button(self.frame,text="YES") 
     self.button1.pack(side=BOTTOM) 
     self.button1.bind("<Button-1>", self.button1Click) 

     self.button2=Tkinter.Button(self.frame,text="NO") 
     self.button2.pack() 
     self.button2.bind("<Button-1>", self.button2Click) 


    def button1Click(self, event): 
      "pressed yes" 

    def button2Click(self, event): 
      "pressed no" 

myapp = MyApp(tk) 
tk.mainloop() 

Que dois-je faire dans Button1Click() et Button2Click() pour qu'ils reviennent « OUI » ou « NON » à mon programme sous forme de chaîne?

+0

Pouvez-vous être plus précis sur ce que vous entendez par «retour» OUI ou «NON»? Les événements ne "retournent" pas puisqu'ils sont appelés depuis la boucle d'événement. Voulez-vous mettre à jour un widget, retourner quelque chose sur stdout, définir une variable, ou ...? –

Répondre

0

retourne simplement la chaîne au gestionnaire TKinter, qui l'ignore.

Vous devez faire quelque chose dans vos définitions de clic, par ex. mettre à jour le texte d'étiquette

1

Vous ne pouvez pas "renvoyer" une chaîne, car les rappels sont appelés depuis la boucle d'événements et la boucle d'événements ignore toutes les valeurs renvoyées par les rappels car elle ne sait pas quoi faire avec les valeurs renvoyées.

Si vous voulez « OUI » ou « NON » à appliquer au widget self.message, vous pouvez modifier vos callbacks pour ressembler à ceci:

def button1Click(self, event): 
     self.message.configure(text="YES") 

def button2Click(self, event): 
     self.message.configure(text="NO") 

Vous devrez ensuite faire le message widget visible. Par exemple, ajoutez "self.message.pack()" dans votre code quelque part.

Si vous avez besoin d'une réponse plus précise à votre question, vous devrez mieux décrire ce que vous entendez par "retour" - voulez-vous voir le texte dans une étiquette, apparaître dans une boîte de dialogue contextuelle , etc.

2
import Tkinter 
from Tkconstants import * 

tk = Tkinter.Tk() 


class MyApp: 

    def __init__(self,parent): 

     self.frame = Tkinter.Frame(tk,relief=RIDGE,borderwidth=2) 
     self.frame.pack() 

     self.message = Tkinter.Message(tk,text="Symbol Disolay") 

     label=Tkinter.Label(self.frame,text="Is Symbol Displayed") 
     label.pack() 

     self.button1=Tkinter.Button(self.frame,text="YES") 
     self.button1.pack(side=BOTTOM) 
     self.button1.bind("<Button-1>", self.button1Click) 

     self.button2=Tkinter.Button(self.frame,text="NO") 
     self.button2.pack() 
     self.button2.bind("<Button-1>", self.button2Click) 


    def button1Click(self, event): 
      return "YES" 

    def button2Click(self, event): 
      return "NO" 

myapp = MyApp(tk) 
tk.mainloop()