复选框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方面的干货了。赶紧来围观啊!!!