复选框wx.CheckBox,是一个带有文本标签的开关按钮。复选框通常成组的方式显示,但是每个复选框的开关状态是相互独立的。当你有一个或多个需要明确的开关状态的选项时,可以使用复选框。
单选按钮wx.RadioButton,是一种允许用户从几个选项中选择其一的窗口组件。与复选框不同,单选按钮是显式地成组配置,并且只能选择其中一个选项。当选择了新的选项时,上次的选择就还原了。
程序清单:check_radiao.py
import wx # 继承Frame class CheckAndRadio(wx.Frame): def __init__(self, *args, **kwargs): super(CheckAndRadio, self).__init__(*args, **kwargs) # 初始化窗口UI self.init_ui() def init_ui(self): # 面板 panel = wx.Panel(self) # 单个复选框 checkbox1 = wx.CheckBox(panel, id=wx.ID_ANY, label="画画", pos=(20, 20)) checkbox2 = wx.CheckBox(panel, id=wx.ID_ANY, label="游泳", pos=(80, 20)) self.Bind(wx.EVT_CHECKBOX, self.check, checkbox1) self.Bind(wx.EVT_CHECKBOX, self.check, checkbox2) # 多个复选框 check_list_box = wx.CheckListBox(panel, id=wx.ID_ANY, choices=["跳舞", "放羊", "吹牛"], pos=(20, 50), size=(150, -1)) self.Bind(wx.EVT_CHECKLISTBOX, self.check_list, check_list_box) # 单个单选按钮 radiobutton1 = wx.RadioButton(panel, id=wx.ID_ANY, label="男性", pos=(20, 125)) radiobutton2 = wx.RadioButton(panel, id=wx.ID_ANY, label="女性", pos=(80, 125)) self.Bind(wx.EVT_RADIOBUTTON, self.radio, radiobutton1) self.Bind(wx.EVT_RADIOBUTTON, self.radio, radiobutton2) # 单选按钮组 radio_box = wx.RadioBox(panel, id=wx.ID_ANY, choices=["你牛", "我牛", "他牛"], pos=(20, 150)) self.Bind(wx.EVT_RADIOBOX, self.radio_list, radio_box) self.SetSize(900, 500) self.SetTitle("复选框和单选按钮的应用") self.Centre() self.Show(True) def check(self, e): print(e.GetId(), e.IsChecked()) def check_list(self, e): obj = e.GetEventObject() # 选中列表的下标(从0开始) checked_list = obj.GetCheckedItems() print(checked_list) # 单选结果 def radio(self, e): radio_button = e.GetEventObject() # 选中列表的下标(从0开始) result = radio_button.GetLabel() print(result) # 多个单选 def radio_list(self, e): radio_list = e.GetEventObject() # 选中单选按钮的下标(从0开始) index = radio_list.GetSelection() print(index) def main(): app = wx.App(False) CheckAndRadio(None) app.MainLoop() if __name__ == "__main__": main()
运行程序之后,弹出的窗口如下:
创建单个复选框,用wx.CheckBox组件。在绑定wx.EVT_CHECKBOX事件之后,判断是否选中,可用CommandEvent对象的IsChecked()方法,也可用GetEventObject()方法得到CheckBox对象之后,再用IsChecked()方法进行判断,区别不同的组件,用GetId()方法即可。
同时创建多个复选项,用wx.CheckListBox()组件,选项(列表)内容在choices属性中指定。绑定wx.EVT_CHECKLISTBOX事件和处理函数,用CheckListBox的对象方法GetCheckedItems()获取被选中的列表(下标)。
创建单个单选按钮用wx.RadioButton()组件,在wxPython中,生成的多个单选组件会有自动互斥效果。绑定wx.EVT_RADIOBUTTON事件和处理函数,判断选中那个单选按钮用GetId()方法或者用GetLabel()直接获得文本内容。
创建单选按钮组,用wx.RadioBox()组件。绑定wx.EVT_RADIOBOX事件和处理函数,判断选择那个单选按钮,用RadioBox对象的GetSelection()获得选中下标。
好了,复选和单选按钮就说到这了,关注我,下一节更精彩。
码字不易,你的关注和转发是对我最大的鼓励,谢谢!
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!