使用wxPython时wx.RB_SINGLE导致单选按钮无法取消选中的问题
wxRB_SINGLE单选按钮无法通过SetValue(False)取消选中的问题
根据wxWidgets文档,wxRB_SINGLE要求开发者在按钮的事件处理器中手动处理单选按钮的选中与取消操作。但在wxPython中,我尝试直接调用SetValue(False),以及在wx.EVT_RADIOBUTTON处理器中调用该函数,单选按钮始终保持选中状态,GetValue()返回True,完全无法实现取消选中。我是不是完全误解了wx.RB_SINGLE的作用?
我的目标是让单选按钮从开发者角度表现得像复选框,由自己控制其具体行为,不希望wxWidgets进行自动分组。
以下是调试用的代码:
import wx class Example(wx.Frame): def __init__(self, *args, **kwargs): super(Example, self).__init__(*args, **kwargs) panel = wx.Panel(self) rb1 = wx.RadioButton(panel, label = 'Button 1', pos = (30, 10), style=wx.RB_SINGLE ) rb2 = wx.RadioButton(panel, label = 'Button 2', pos = (30, 30), style=wx.RB_SINGLE ) rb3 = wx.RadioButton(panel, label = 'Button 3', pos = (30, 50), style=wx.RB_SINGLE ) rb2.Bind(wx.EVT_RADIOBUTTON, lambda x: rb2.SetValue(False)) rb2.SetValue(False) def main(): app = wx.App() ex = Example(None) ex.Show(True) app.MainLoop() if __name__ == '__main__': main()
运行环境:
- Ubuntu Linux 22.04 LTS
- GTK后端版本:3.24.33-1ubuntu2
- wxPython版本:4.2.0
- Python版本:3.10.6
内容的提问来源于stack exchange,提问作者Newbyte
相关产品推荐
相关产品推荐

