Logo

郎哥编程

单选框控件

2019-07-17 531

单选框是一组互斥的选项,在给出的一组选项中,用户只能选择一个选项。单选框包括圆形图案和一个文本标签。圆形图案用于表示该项是否被选中:当该项被选中时,圆形图案内部会有一个黑色的小圆点;当该项未被选中时,圆形图案内部是空白区域,没有黑色的小圆点。

 image.png                                           

与单选框控件相关的类是wx.RadioBox,wx.RadioBox的构造函数为:

RadioBox(
parent,
id=ID_ANY,
label="",
pos=DefaultPosition,
size=DefaultSize,
choices=[], 
majorDimension=0, 
style=RA_SPECIFY_COLS, 
validator=DefaultValidator, 
name=RadioBoxNameStr
)

其构造函数的参数说明如下:

parent:该控件的父窗口,可以是窗体对象,也可以是面板对象,类型是wx.Window。

id:控件标识符。使用-1可以自动创建一个唯一的标识,类型是wx.WindowID。

label:单选框标题。

pos: 控件在父窗口的起始位置,类型是wx.Point。

size: 控件的宽度和高度,类型是wx.Size。

choices:文本标签数据项。列表类型。

majorDimension:指定二维RadioBox的最大行数(如果样式包含wx.RA_SPECIFY_ROWS)或列数(如果样式包含wx.RA_SPECIFY_COLS)。默认值0表示使用项目数,即选项中的元素数。

style:控件样式。默认样式是RA_SPECIFY_COLS。

validator:窗口验证器。

name:控件的名称。

参数style设定了wx. RadioBox的输出样式,主要样式如下:

wx.RA_SPECIFY_ROWS: 主维度参数是指最大行数。

wx.RA_SPECIFY_COLS: 主维度参数是指最大列数。

关于 wx.RadioBox的方法

wx. RadioBox类提供了一些方法用来操作单选框控件,下面列出了wx. RadioBox类提供的一些常用方法,更多方法请参见官方API文档。

https://docs.wxpython.org

GetCount(self):返回控件中的项数。返回类型为int类型。

EnableItem(self, n, enable=True):启用或禁用RadioBox中的单个项。参数n是int类型,RadioBox选项组的项索引。参数enable为True启用该项,为False时禁用该项。

GetRowCount(self):返回RadioBox中的行数。返回类型为int类型。

GetSelection(self): 返回所选项目的索引,如果未选择任何项目,则返回NOT_FOUND。返回类型为int类型。

SetSelection(self, n):将所选内容设置为给定项。请注意,一个单选框总是有选择的,因此n必须在这里有效,不允许传递未找到。参数n为int类型,RadioBox选项组的项索引。

IsItemEnabled(self, n):如果项已启用,则返回“真”;如果项已使用“启用”禁用,则返回“假”。参数n为int类型,RadioBox选项组的项索引。

关于wx.RadioBox的事件

wx. CheckBox可以发送以下类型的事件:

EVT_RADIOBOX: 当wx.RadioBox选项组的一项被单击时,发送该事件。

案例代码:

import wx
   
class RadioBoxSamleFrame(wx.Frame):
    def __init__(self, *args, **kw):
 
        # 调用父类的 __init__ 方法
        super(RadioBoxSamleFrame, self).__init__(*args, **kw)
       
        panel = wx.Panel(self, -1,(0, 0), (400, 500))
        sampleList = ['Java编程基础', 'Python编程基基础', '数据库技术', '数据结构与算法', 'HTML技术', 'CSS技术']
 
        radioBox = wx.RadioBox(panel, -1,'这是一个单选框', (50, 50), (200, 300),sampleList,0,wx.RA_SPECIFY_ROWS)
         
 
        # 绑定EVT_RADIOBOX事件
        self.Bind(wx.EVT_RADIOBOX, self.OnClick,radioBox)
 
     
 
    #RadioBox单击事件处理方法 
    def OnClick(self,event):
          wx.MessageBox("您单击了RadioBox项")
 
                    
if __name__ == '__main__':
    app = wx.App()
    frame = RadioBoxSamleFrame(None, title='单选框控件',size=(500,500))
    frame.Show()
    app.MainLoop()

案例代码执行效果图:

image.png


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论