wxPython 在不同方法之间处理事件(按钮和单选按钮)
我正在学习wxpython来做一个项目,但遇到了一个问题……
我想知道,点击我的按钮后,怎么才能保存单选按钮的值呢?
我有一个
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方法用来设置我的界面,里面有很多东西,包括三个单选按钮和一个按钮,像这样
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)
但是不管用。顺便说一下,我对面向对象编程的理解还很有限。
1 个回答
3
我假设你已经有了用户界面。单选按钮是用来选择波特率的。
baudRadioButton1 = wx.RadioButton(mypanel, -1, '9600', style=wx.RB_GROUP)
这里的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
......
等等……
我建议你了解一下事件机制。
希望这对你有帮助。