多选框

来源:互联网 发布:微信web开发者工具mac 编辑:程序博客网 时间:2024/06/18 06:59

多选框也叫复选框,是一个带有文本标签的开关按钮


import wxclass CheckBoxFrame(wx.Frame):    def __init__(self):        wx.Frame.__init__(self, None, -1, u'多选框', size=(180, 180))        panel = wx.Panel(self, -1)        wx.StaticText(panel, -1, u"你喜欢的水果:", (10, 10), (100, 20))        wx.CheckBox(panel, -1, u"苹果", (10, 30), (100, 20))        wx.CheckBox(panel, -1, u"香蕉", (10, 50), (100, 20))        wx.CheckBox(panel, -1, u"西瓜", (10, 70), (100, 20))        wx.CheckBox(panel, -1, u"桔子", (10, 90), (100, 20))        #创建了4个多选框控件CheckBox。(10, 10)表示position 。(100, 20)表示多选框大小if __name__ == '__main__':    app = wx.PySimpleApp()    CheckBoxFrame().Show()    app.MainLoop()

结果


多选框事件

# -*- coding: UTF-8 -*-import wxclass CheckBoxFrame(wx.Frame):    def __init__(self):        wx.Frame.__init__(self, None, -1, u'多选框', size=(150, 200))        panel = wx.Panel(self, -1)        wx.StaticText(panel, -1, u"你喜欢的水果:", (10, 10), (100, 20))        self.checkBox1 = wx.CheckBox(panel, -1, u"苹果", (10, 30), (100, 20))        self.checkBox2 = wx.CheckBox(panel, -1, u"香蕉", (10, 50), (100, 20))        self.checkBox3 = wx.CheckBox(panel, -1, u"西瓜", (10, 70), (100, 20))        self.checkBox4 = wx.CheckBox(panel, -1, u"桔子", (10, 90), (100, 20))        #4个多选框        self.allCheckBox = wx.CheckBox(panel, -1, u"全选", (10, 110), (100, 20))        #单独设置个全选复选框        self.selectFlag = True                # 判断全选是否选中?        self.fruit = []                        # 存放选中的水果        self.button = wx.Button(panel, -1, u"查看", (10, 140), (100, 20))#按钮控件,查看选中的多选框        self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)            # 按钮绑定onclick事件处理函数        for checkBox in [self.checkBox1, self.checkBox2, self.checkBox3, self.checkBox4]:            self.Bind(wx.EVT_CHECKBOX, self.OnSelectSingle, checkBox)   #4个复选框绑定OnSelectSingle事件处理函数        self.Bind(wx.EVT_CHECKBOX, self.OnSelect, self.allCheckBox) #全选复选框单独绑定OnSelect事件处理函数    def OnSelectSingle(self, event):        checkBoxSelected = event.GetEventObject()  #获取选中的多选框控件        if checkBoxSelected.IsChecked():       #如果多选框被选中            self.fruit.append(checkBoxSelected.GetLabelText())  #把该控件的标签加入到水果列表        else:            self.fruit.remove(checkBoxSelected.GetLabelText())  #如果没有被选中,从列表中移除该控件标签名称?不是肯定被选中            self.selectFlag = not self.selectFlag   #置为相反的布尔值?全局变量?    def OnSelect(self, event):   #全选复选框的事件处理函数        self.fruit = []   #清空水果列表        for checkBox in [self.checkBox1, self.checkBox2, self.checkBox3, self.checkBox4]:            checkBox.SetValue(self.selectFlag)     #把复选框1—4都设定值为TRUE,改变控件状态        if self.allCheckBox.IsChecked():  #全选复选框被选中            for checkBox in [self.checkBox1, self.checkBox2, self.checkBox3, self.checkBox4]:                self.fruit.append(checkBox.GetLabelText())   #四个复选框的标签加入到水果列表                checkBox.Disable()   #将四个多选框控件设置为disable        else:  #如果没有选中该复选框            for checkBox in [self.checkBox1, self.checkBox2, self.checkBox3, self.checkBox4]:                checkBox.Enable()  #其他四个复选框均可用enable        self.selectFlag = not self.selectFlag   #把变量selectFlag设置为相反的布尔值。?    def OnClick(self, event):   #单击按钮事件函数        str = "".join(self.fruit)                                 # 获取checkbox的文本值        wx.MessageBox(str.encode("cp936"), u"提示")                # 输出中文对话框if __name__ == '__main__':    app = wx.PySimpleApp()    CheckBoxFrame().Show()    app.MainLoop()

结果




0 0
原创粉丝点击