2013-08-07 35 views
0

我有一個簡單的使用WXPython開發的python GUI。我有一個checkbox1,checkbox2和radiobox1。基於Checkbox2選擇,我希望啓用或禁用radiobox1。例如,如果Checkbox2未選中,我希望radiobox1被禁用。我嘗試使用getvalue()參數,但沒有成功。這裏是示例代碼。Python:基於複選框選擇啓用Radiobox

任何幫助,非常感謝。

import wx 

def create(parent): 
    return Frame1(parent) 

[wxID_FRAME1, wxID_FRAME1CHECKBOX1, wxID_FRAME1CHECKBOX2, 
wxID_FRAME1NOTEBOOK1, wxID_FRAME1PANEL1, wxID_FRAME1RADIOBOX1, 
wxID_FRAME1STATICBOX1, wxID_FRAME1STATICTEXT1, 
] = [wx.NewId() for _init_ctrls in range(8)] 

class Frame1(wx.Frame): 
    def _init_coll_notebook1_Pages(self, parent): 
     # generated method, don't edit 

     parent.AddPage(imageId=-1, page=self.panel1, select=True, text='Pages0') 
     parent.AddPage(imageId=-1, page=self.staticText1, select=False, 
       text='Pages1') 

    def _init_ctrls(self, prnt): 
     # generated method, don't edit 
     wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt, 
       pos=wx.Point(470, 184), size=wx.Size(677, 492), 
       style=wx.DEFAULT_FRAME_STYLE, title='Frame1') 
     self.SetClientSize(wx.Size(661, 454)) 

     self.notebook1 = wx.Notebook(id=wxID_FRAME1NOTEBOOK1, name='notebook1', 
       parent=self, pos=wx.Point(0, 0), size=wx.Size(661, 454), style=0) 

     self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', 
       parent=self.notebook1, pos=wx.Point(0, 0), size=wx.Size(653, 428), 
       style=wx.TAB_TRAVERSAL) 

     self.staticBox1 = wx.StaticBox(id=wxID_FRAME1STATICBOX1, 
       label='staticBox1', name='staticBox1', parent=self.panel1, 
       pos=wx.Point(16, 16), size=wx.Size(232, 128), style=0) 

     self.checkBox1 = wx.CheckBox(id=wxID_FRAME1CHECKBOX1, label='checkBox1', 
       name='checkBox1', parent=self.panel1, pos=wx.Point(24, 40), 
       size=wx.Size(70, 13), style=0) 

     self.checkBox2 = wx.CheckBox(id=wxID_FRAME1CHECKBOX2, label='checkBox2', 
       name='checkBox2', parent=self.panel1, pos=wx.Point(24, 64), 
       size=wx.Size(70, 13), style=0) 
     self.checkBox2.Set3StateValue(1) 
     self.checkBox2.Bind(wx.EVT_CHECKBOX, self.OnCheckBox2Checkbox, 
       id=wxID_FRAME1CHECKBOX2) 

     self.radioBox1 = wx.RadioBox(choices=['Phase A', 'PhaseB', 'Phase C'], 
       id=wxID_FRAME1RADIOBOX1, label='radioBox1', majorDimension=3, 
       name='radioBox1', parent=self.panel1, pos=wx.Point(32, 88), 
       size=wx.Size(200, 44), style=wx.RA_SPECIFY_COLS) 

     self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1, 
       label='staticText1', name='staticText1', parent=self.notebook1, 
       pos=wx.Point(0, 0), size=wx.Size(653, 428), style=0) 

     self._init_coll_notebook1_Pages(self.notebook1) 

    def __init__(self, parent): 
     self._init_ctrls(parent) 

    def OnCheckBox2Checkbox(self, event): 
     #event.Skip() 
     if self.checkBox2.GetValue() == 'False': 
      self.radioBox1.Enable(False) 
      print self.checkBox2.IsChecked() 

if __name__ == '__main__': 
    app = wx.PySimpleApp() 
    frame = create(None) 
    frame.Show() 

    app.MainLoop() 

回答

1

我認爲你的問題是,你只能改變事物在一個方向 - 改變:

def OnCheckBox2Checkbox(self, event): 
    #event.Skip() 
    if self.checkBox2.GetValue() == 'False': 
     self.radioBox1.Enable(False) 
     print self.checkBox2.IsChecked() 

到:

def OnCheckBox2Checkbox(self, event): 
    self.radioBox1.Enable(self.checkBox2.IsChecked()) 
    print self.checkBox2.IsChecked() 
+0

完美。這就是我一直在尋找的。謝謝 – buggsbunny4

相關問題