单选框是一组互斥的选项,在给出的一组选项中,用户只能选择一个选项。单选框包括圆形图案和一个文本标签。圆形图案用于表示该项是否被选中:当该项被选中时,圆形图案内部会有一个黑色的小圆点;当该项未被选中时,圆形图案内部是空白区域,没有黑色的小圆点。
与单选框控件相关的类是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()案例代码执行效果图:
