我正在为我的一个项目学习wxpython,但我遇到了问题。
单击按钮后,如何存储RadioButton的值?

我有一个

class SerialFrame(wx.Frame):


我里面有

def __init__(self, parent, title):

    super(SerialFrame, self).__init__(parent, title=title,
                                      size=(550, 400))

    self.SetMinSize(self.GetSize())
    self.InitUI()
    self.Center()
    self.Show()


InitUI方法设置了我的UI,其中包含很多东西,包括3个单选按钮和一个类似的按钮

def InitUI(self):
    mypanel = wx.Panel(self, -1)
    ...
    baudRadioButton1 = wx.RadioButton(mypanel, -1, '9600', style=wx.RB_GROUP)
    baudRadioButton2 = wx.RadioButton(mypanel, -1, '14400')
    baudRadioButton3 = wx.RadioButton(mypanel, -1, '19200')
    ...
    stopButton = wx.Button(mypanel, 2, label='Stop', size = (70,20))
    ...
    mypanel.Bind(wx.EVT_BUTTON, self.clickStart, id=1)
    mypanel.Bind(wx.EVT_RADIOBUTTON, self.setRadioValues, id=baudRadioButton1.GetId())


我尝试了类似的东西

def clickStart(self, event):

    baudRate1 = str(self.baudRadioButton1.GetValue())
    self.Close(True)


但这是行不通的。附言我的OOP知识仍然很有限。

最佳答案

我假设你有UI。单选按钮用于选择波特率。

 baudRadioButton1 = wx.RadioButton(mypanel, -1, '9600', style=wx.RB_GROUP)


9600仅在GUI上打印。您可以输入您的名字而不是9600。

您必须了解,什么也不会自动发生。我们必须告诉wxpython选择单选按钮时如何反应。

您尚未将BaudradioButton1与clickStart1绑定。绑定用于指定事件发生时必须调用的方法/功能。

因此,当选择单选按钮时,将发生“ EVT_RADIOBUTTON”事件,并且wxpython将调用您的clickstart1方法。在clickstart中,您可以操纵波特率。
简而言之,您不必保存单选按钮值。

我的建议是

baudRadioButton1 = wx.RadioButton(mypanel, -1, label='9600', style=wx.RB_GROUP)
baudRadioButton2 = wx.RadioButton(mypanel, -1, label='14400')
baudRadioButton3 = wx.RadioButton(mypanel, -1, label='19200')


用方法绑定单选按钮

self.Bind(wx.EVT_RADIOBUTTON,self.baudRadioButton1,self.clickstart1)
self.Bind(wx.EVT_RADIOBUTTON,self.baudRadioButton2,self.clickstart2)
self.Bind(wx.EVT_RADIOBUTTON,self.baudRadioButton3,self.clickstart3)


和方法将是

def clickStart1(self, event):
    baudRate = 9600
    ......


def clickStart2(self, event):
    baudRate = 14400
    ......


等等..

我建议您阅读事件机制。

我希望这有帮助。

关于python - wxPython处理不同方法之间的事件(按钮和单选按钮),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5246998/

10-14 18:29
查看更多