复选框同列表框类似,也可以同时选择多个文本数据项。复选框包括一个小方框和一个文本标签,小方框用于表示该项是否被选中,当该项被选中时,小方框内会显示“√”,当该项未被选中时,小方框的内容为空白。文本标签用于表示该选项的内容。
与复选框控件相关的类是wx.CheckBox,wx.CheckBox的构造函数为:
CheckBox(parent, id=ID_ANY, label="", pos=DefaultPosition, size=DefaultSize, style=0, validator=DefaultValidator, name=CheckBoxNameStr)
其构造函数的参数说明如下:
parent:该控件的父窗口,可以是窗体对象,也可以是面板对象,类型是wx.Window。
id:控件标识符。使用-1可以自动创建一个唯一的标识,类型是wx.WindowID。
label:文本标签内容。
pos: 控件在父窗口的起始位置,类型是wx.Point。
size: 控件的宽度和高度,类型是wx.Size。
style:控件样式。
validator:窗口验证器。
name:控件的名称。
参数style设定了wx. CheckBox的输出样式,主要样式如下:
wx.CHK_2STATE: 创建一个具备2个状态的复选框。这是默认样式。
wx.CHK_3STATE: 创建一个具备3个状态的复选框。未在基于GTK+1.2构建的OS2和WXGTK中实现。
wx.CHK_ALLOW_3RD_STATE_FOR_USER: 默认情况下,用户不能将3状态复选框设置为第三状态。只能从代码中完成。使用此标志允许用户通过单击将复选框设置为第三状态。
wx.ALIGN_RIGHT: 使文本显示在复选框的左侧。
关于 wx. CheckBox的方法
wx.CheckBox类提供了一些方法用来操作复选框控件,下面列出了wx. CheckBox类提供的一些常用方法,更多方法请参见官方API文档。
https://docs.wxpython.org
IsChecked (self):如果该复选框被选中,返回True,否则返回False。返回类型为bool类型。
SetValue(self, state):将复选框设置为给定状态。state为bool类型,如果为True,复选框被选中,否则复选框未被选中。
关于wx.CheckBox的事件
wx. CheckBox可以发送以下类型的事件:
EVT_CHECKBOX: 用户单击复选框时发送该事件。
案例代码:
import wx
class CheckBoxSamleFrame(wx.Frame):
def __init__(self, *args, **kw):
# 调用父类的 __init__ 方法
super(CheckBoxSamleFrame, self).__init__(*args, **kw)
panel = wx.Panel(self, -1)
checkBox1 = wx.CheckBox(panel, -1,'Python编程基础', (100, 50), (200, 60))
# 设置为选中状态
checkBox1.SetValue(True)
checkBox2 = wx.CheckBox(panel, -1,'Java编程基础', (100, 100), (200, 60))
# 设置为选中状态
checkBox2.SetValue(False)
# 绑定EVT_CHECKBOX事件
self.Bind(wx.EVT_CHECKBOX, self.OnCheckBox1,checkBox1)
# 绑定EVT_CHECKBOX事件
self.Bind(wx.EVT_CHECKBOX, self.OnCheckBox2,checkBox2)
#CheckBox选中事件处理方法
def OnCheckBox1(self,event):
wx.MessageBox("您单击了Python编程基础")
#CheckBox选中事件处理方法
def OnCheckBox2(self,event):
wx.MessageBox("您单击了Java编程基础")
if __name__ == '__main__':
app = wx.App()
frame = CheckBoxSamleFrame(None, title='复选框控件')
frame.Show()
app.MainLoop()