2011-03-09 88 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