2013-12-22 2 views
0

필자는 필요할 때 편집하는 다음 TextCtrl 세트가 있습니다.TextCtrl에서 여러 숫자를 가져 오는 방법은 무엇입니까?

import wx 
class MyCheckBox(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, -1, 'Values', size=(490, 450)) 
     panel = wx.Panel(self, -1) 

     List = [(70, 55), (170, 55), (270, 55), (370, 55), 
       (70, 85), (170, 85), (270, 85), (370, 85)] 

     val = [] 
     for i in range(0,8): 
      value = -999 
      val.append(value) 

     for p,v in zip(List,val): 
      self.value = wx.TextCtrl(panel, -1, value=str(v), pos=p, size=(60,25)) 

     self.btnOK = wx.Button(panel, label="OK", pos=(190, 355)) 
     self.Bind(wx.EVT_BUTTON, self.OnOK, id = self.btnOK.GetId()) 

    def OnOK(self, event): 
     self.Show(False) 

현재 기본값은 모두 '-999'입니다. 확인을 누르면 프로세스가 끝나면 어떻게 목록에 검색 할 수 있습니까?

+0

이 코드는 작동하지 않을 수 있습니다. 'for p, v in zip (List, val)'의 'val'은 어디에서 오는 것입니까? 왜 각 루프 사이클에서'self.value'를 덮어 씁니까? 'pos '는 어디에서 왔는가? 루프의'p'는 무엇을 위해 사용됩니까? – joaquin

+0

OP가 업데이트되었습니다. 'self.value' 다음에리스트에 모든 값을 덧붙여서 그것들을 검색 할 수는 없습니다. – Ibe

답변

1

당신은 나중에 그 값을 복구하기 위해 목록 내부에 textcontrols을 유지해야합니다

import wx 

class MyCheckBox(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, -1, 'Values', size=(490, 250)) 
     panel = wx.Panel(self, -1) 

     positions = [(70, 55), (170, 55), (270, 55), (370, 55), 
        (70, 85), (170, 85), (270, 85), (370, 85)] 

     values = ['a', 'a','a', 'a','a', 'a','a', 'a',] 

     self.controls = []   
     for pos, value in zip(positions, values): 
      control = wx.TextCtrl(panel, -1, value=str(value), 
           pos=pos, size=(60,25)) 
      self.controls.append(control) 

     self.to_show = wx.TextCtrl(panel, -1, value='', 
            pos=(90, 120), size=(290,25)) 

     self.btnOK = wx.Button(panel, label="OK", pos=(190, 180)) 
     self.Bind(wx.EVT_BUTTON, self.OnOK, self.btnOK) 

    def OnOK(self, event): 
     all_values = [] 
     for control in self.controls: 
      all_values.append(control.GetValue()) 

     self.to_show.SetValue(str(all_values)) 

if __name__ == '__main__': 
    app = wx.PySimpleApp() 
    f = MyCheckBox() 
    f.Show() 
    app.MainLoop() 

enter image description here

+0

감사합니다. 그것은 문제를 해결했습니다. – Ibe

관련 문제