xwPython中Radio和CheckButton的使用

来源:互联网 发布:酷派1手机双卡网络设置 编辑:程序博客网 时间:2024/05/31 05:28
#!/usr/bin/python
#-*- coding:utf8 -*-


#这是一个多选框的设定
import wx
class CheckBox(wx.Frame):
    def __init__(self, root):
        wx.Frame.__init__(self,None, -1, u"多选框",size=(200, 180))
        panel = wx.Panel(self, -1)
        wx.StaticText(panel, -1, u"你喜欢的水果",(10,10),(100, 20))
        
        self.appleCheck = wx.CheckBox(panel, -1, u"苹果", (10,30), (100,20))
        self.bananaCheck = wx.CheckBox(panel, -1, u"香蕉", (10,50), (100,20))
        self.melonCheck = wx.CheckBox(panel, -1, u"西瓜", (10,70), (100,20))
        self.allCheckBox = wx.CheckBox(panel, -1, u"全选", (10, 110), (100,20))

        self.testBtn = wx.Button(panel, -1, u"确定", (10,140), (100, 20))
        self.Bind(wx.EVT_BUTTON, self.OnClick, self.testBtn)

        self.selectAll = True   #表示是否全选
        self.fruits = []   #数据的保存  利用全局变量
        
        for checkBox in [self.appleCheck,self.bananaCheck,self.melonCheck]:
            self.Bind(wx.EVT_CHECKBOX, self.OnSelectSingle, checkBox)
        self.Bind(wx.EVT_CHECKBOX, self.OnSelect, self.allCheckBox)


    def OnSelectSingle(self, event):
        checkBox = event.GetEventObject()
        if checkBox.IsChecked():
            self.fruits.append(checkBox.GetLabelText())
        else:
            self.fruits.remove(checkBox.GetLabelText())
            self.selectAll = not self.selectAll  #如果数据减少的话  必须为非全选状态

    def OnSelect(self, event):
        self.fruits = []   #保证里面的数据为空
        if self.allCheckBox.IsChecked():
            for eachCheck in [self.appleCheck, self.bananaCheck, self.melonCheck]:
                self.fruits.append(eachCheck.GetLabelText())
                eachCheck.Disable()
        else:
            for eachCheck in [self.appleCheck, self.bananaCheck, self.melonCheck]:
                eachCheck.Enable()
        self.selectAll = not self.selectAll   #去相反的
       
    def OnClick(self, event):
        fruitString = ",".join(self.fruits)
        wx.MessageBox(fruitString.encode("UTF-8"),u"提示")  #进行数据的打印
        


class MyApp(wx.App):
    def OnInit(self):
        self.frame = CheckBox(None)
        self.frame.Show()
        return True

app = MyApp()

app.MainLoop()




#!/usr/bin/python
#-*- coding:utf8 -*-

import wx

class RadioButton(wx.Frame):
    def __init__(self, root):
        wx.Frame.__init__(self,root, -1,u"单选按钮",size=(200, 200))
        panel = wx.Panel(self, -1)
        radioApple = wx.RadioButton(panel, -1, u"苹果",pos=(10,10))
        radioBanana = wx.RadioButton(panel, -1, u"香蕉", pos=(10, 40))
        radioPear = wx.RadioButton(panel,-1, u"梨子", pos=(10, 70))
        self.textColor = wx.TextCtrl(panel, -1, "苹果", pos=(80,10))
        for eachRadio in [radioApple, radioBanana, radioPear]:
            self.Bind(wx.EVT_RADIOBUTTON, self.OnSelect, eachRadio)

    def OnSelect(self, event):
        selectRadio = event.GetEventObject()
        string = selectRadio.GetLabel()
        self.textColor.SetValue(string)


class RadioBox(wx.Frame):
    def __init__(self, root):
        wx.Frame.__init__(self, None, -1, u"单选按钮", size=(320, 150))
        panel = wx.Panel(self, -1)
        colors = [u"红", u"黄", u"蓝", u"绿", u"青", u"白", u"紫"]
        
        wx.RadioBox(panel, -1, u"颜色",(10,10), wx.DefaultSize, colors, 4, wx.RA_SPECIFY_COLS)

        wx.RadioBox(panel, -1, u"颜色", (180, 10), wx.DefaultSize, colors, 3, wx.RA_SPECIFY_ROWS)

class MyApp(wx.App):
    def OnInit(self):
        self.frame = RadioBox(None)
        self.frame.Show()
        return True

app = MyApp()
app.MainLoop()



#以上介绍了CheckBox和Radioutton的使用方法


QQ交流群: 204944806

0 0
原创粉丝点击