Tkinter按钮绑定

时间:2009-07-20 08:51:50

标签: bind tkinter messagebox

这是我的代码:

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()

我应该在button1Click()和button2Click()中做什么,以便他们以字符串格式向我的程序返回“YES”或“NO”?

3 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

你不能“返回”一个字符串,因为从事件循环中调用了回调,并且事件循环忽略了回调返回的所有值,因为它不知道如何处理返回的值。 / p>

如果要将“YES”或“NO”应用于self.message小部件,则可以将回调更改为如下所示:

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

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

然后,您需要使消息窗口小部件可见。例如,在代码中的某处添加“self.message.pack()”。

如果您需要更具体的问题答案,您需要更好地描述“返回”的含义 - 您是否希望在标签中看到文本,出现在弹出对话框中,等。

答案 2 :(得分:0)

简单地return "pressed yes"会将字符串返回给TKinter处理程序,后者会忽略它。

您必须在点击定义中执行某些操作,例如:更新标签文本