2013-08-07 3 views
0

WXPython을 사용하여 개발 한 간단한 파이썬 GUI가 있습니다. checkbox1, checkbox2 및 radiobox1이 있습니다. Checkbox2 선택에 따라 radiobox1을 사용하거나 사용하지 않도록 설정합니다. 예를 들어, Checkbox2를 선택하지 않으면 radiobox1을 사용하지 않도록 설정합니다. getvalue() 매개 변수를 사용했지만 성공하지 못했습니다. 다음은 샘플 코드입니다.Python : 체크 박스 선택에 따라 라디오 박스 사용

도움을 주시면 감사하겠습니다.

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

관련 문제