我正在为我的一个项目学习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/