2011-03-09 89 views
2

我学习为我的项目之一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方法设置我的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) 

但它不会工作。附:我的面向对象知识仍然有限。

回答

3

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

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

这里9600只打印在GUI上。你可以把你的名字,而不是9600

你必须明白,没有什么是自动发生。我们必须告诉wxpython当单选按钮被选中时如何反应。

你有没有做过与clickStart1 BaudradioButton1的结合。绑定用于指定事件发生时必须调用的方法/乐趣。

所以当选择一个单选按钮,然后出现“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 
    ...... 

等..

我会建议你阅读关于事件机制。

我希望这会有所帮助。

+0

您好,非常感谢您的回复。我想我解决了单选按钮问题。然而,我有一个新的问题..与以前一样,我有几个方法__init__,InitUI等等。如果我按下按钮,如何更改InitUI中的值?我有我的InitUI中的这行displayTextCtrl = wx.TextCtrl(mypanel,value ='',style = wx.TE_MULTILINE | wx.TE_AUTO_SCROLL | wx.TE_READONLY)。如果我想在单击按钮(使用不同的方法)后执行displayTextCtrl.SetValue('asdf'),我该怎么做?谢谢 – lamba 2011-03-09 15:58:43

+0

我不知道我是否明白你的观点。你只需要在同一个类中想要的任何方法内调用这个有趣的** displayTextCtrl.SetValue('asdf')**。 – Netro 2011-03-09 18:24:28