第14天 | 25天学会wxPython,复选和单选按钮

复选框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()

运行程序之后,弹出的窗口如下:

第14天 | 25天学会wxPython,复选和单选按钮

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

上一篇:微信小程序常用的用户交互功能


下一篇:Python使用BeautifulSoup与Requests爬取大学排名