2010-08-14 4 views
0

wx.richtext.RichTextCtrl을 기반으로 사용자 정의 컨트롤을 만들려고하는데 문제가 있습니다. 나는 선별기에 사용자 지정 컨트롤을 추가하려고 할 때마다, wxPython에 오류wxPython GridSizer.Add()가 사용자 정의 컨트롤에 대해 작동하지 않습니다.

Traceback (most recent call last): 
    File "pyebook.py", line 46, in <module> 
    frame = MainFrame(None, 'pyebook') 
    File "pyebook.py", line 14, in __init__ 
    self.mainPanel.GetSizer().Add(ReaderControl(self.mainPanel), 1, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) 
    File "/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.6/site-packages/wx-2.8-mac-unicode/wx/_core.py", line 12685, in Add 
    return _core_.Sizer_Add(*args, **kwargs) 
TypeError: wx.Window, wx.Sizer, wx.Size, or (w,h) expected for item 

사용자 정의 컨트롤이 시간에 매우 간단하고 내가 사용이

class ReaderControl(wx.richtext.RichTextCtrl): 
    def __init__(self, parent, id=-1, value=''): 
     wx.richtext.RichTextCtrl(parent, id, value, style=wx.richtext.RE_READONLY, name='ReaderControl') 

코드처럼 보이는와 초크 조절기를 조절기에 추가하는 방법은 다음과 같습니다.

self.mainPanel.GetSizer().Add(ReaderControl(self.mainPanel), 1, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) 

내가 뭘 잘못하고있어?

답변

3

__ init __을 명시 적으로 호출해야하므로 'self'를 전달할 수 있다고 생각합니다. 그렇지 않으면, 당신은 당신의 서브 클래스를 적절하게 초기화하지 않고, RichTextCtrl의 새로운 인스턴스를 생성하는 것입니다.

IOW :

class ReaderControl(wx.richtext.RichTextCtrl): 
    def __init__(self, parent, id=-1, value=''): 
     wx.richtext.RichTextCtrl.__init__(self, parent, id, value, style=wx.richtext.RE_READONLY, name='ReaderControl' 
+0

바하! 나는 명시 적으로'__init__'라고 불렀다. 눈이 얼마나 자주 눈에 띄지 않고 눈에 띄지 않는지는 놀랍습니다. –

+0

예, 가끔은 복잡한 일을 찾기 위해 바쁘다. 간단한 일은 바로 진행될 것이다. 적어도 한 달에 한 번 나에게 일어난다;) – JimG

관련 문제