关于用户界面:使用wxpython的单选按钮

Radio buttons using wxpython

我正在使用wxpython构建一个GUI。我有按钮和收音机按钮,我想

要根据GUI中小部件的当前值执行这些任务。插入物

按钮具有多个if语句其中一个if语句用于检查

已选择RadioButton。我不想将事件绑定到单选按钮,所以

在"插入"按钮中使用

这是定义的Radion按钮

1
2
3
self.rb1 = wx.RadioButton(self.panel, -1, 'Is this a required pre_action to the next  

step?', (5, 220))

这是检查条件

1
2
3
if self.rb1.GetValue():

    # do something here

还有:

1
2
3
if self.rb1.GetValue() == 'True':

  # do some tasks

在这两种情况下(已经是一样的),当我选择收音机时,什么都不会发生

按钮RB1!那么这有什么问题呢?


我不知道那对你不起作用。对我来说很好。请参见下面的示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import wx

class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,"Tutorial")
        panel = wx.Panel(self, wx.ID_ANY)

        self.radio = wx.RadioButton(panel, label="Test", style = wx.RB_GROUP)
        self.radio2 = wx.RadioButton(panel, label="Test2")

        btn = wx.Button(panel, label="Check Radio")
        btn.Bind(wx.EVT_BUTTON, self.onBtn)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.radio, 0, wx.ALL, 5)
        sizer.Add(self.radio2, 0, wx.ALL, 5)
        sizer.Add(btn, 0, wx.ALL, 5)
        panel.SetSizer(sizer)

    #----------------------------------------------------------------------
    def onBtn(self, event):
       """"""
        print"First radioBtn =", self.radio.GetValue()
        print"Second radioBtn =", self.radio2.GetValue()

# Run the program
if __name__ =="__main__":
    app = wx.PySimpleApp()
    frame = MyForm().Show()
    app.MainLoop()