Button 元素的主要属性包括上面的文字 label、单击后的处理函数等。下面是其初始化函数的定义:
- Button(parent,
- id=ID_ANY,
- label=EmptyString, # 按钮上显示的内容
- pos=DefaultPosition,
- size=DefaultSize,
- style=0,
- validator=DefaultValidator,
- name=ButtonNameStr)
处理函数通过其成员函数 Bind() 来定义,该函数的定义如下:
Bind(self, event, handler, source=None, id=-1, id2=-1)
其中 event 和 handler 是必须定义的,其他的可以不用填写。source 表示事件的发起者,id 表示事件发起者的 ID,id2 用来指定事件发起者的 ID 范围。
下面是一个按钮使用的例子,其窗口有一个按钮,单击该按钮,按钮上的文字发生变化,显示被单击的次数。下面是完整的代码:
- import wx
- # 主窗口类
- class MainFrame(wx.Frame): # 记住一定要从wx.Frame派生出主窗口类
- def __init__(self, p, t):
- """ p: 父亲窗口
- t: 窗口标题
- """
- wx.Frame.__init__(self, id=wx.NewId(), parent=p, title=t, size=
- (300, 100))
- # 该panel的父亲就是该窗口, id=-1就表示任意ID
- panel = wx.Panel(self, -1)
- self.button = wx.Button(panel, -1, u"单击我", pos=(50, 20))
- # 绑定事件,就是指定的button被单击后调用onClick()成员函数
- self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
- self.button.SetDefault()
- self.clicked_times = 0
- def OnClick(self, event):
- self.clicked_times = self.clicked_times + 1
- # 一旦单击就修改按钮的显示文字
- self.button.SetLabel(u"单击成功(%d)" % self.clicked_times)
- if __name__ == "__main__":
- # 创建应用程序
- app = wx.App(False)
- # frame就是应用程序的主窗口
- frame = MainFrame(None, "button演示")
- frame.Show(True) # 显示该窗口
- app.MainLoop() # 进入消息循环
运行该程序,显示如图 1 所示的窗口。
单击窗口上的“单击我”按钮后,显示如图 2 所示。