2014-01-09 5 views
5

wxPython을 배우고 있습니다.wxPython의 OnInit 및 __init__

import wx 

class App(wx.App):  
    def OnInit(self): 
     frame = wx.Frame(parent=None, title = 'bare') 
     frame.Show() 
     return True 


app=App() 
app.MainLoop() 

을 그리고 해당 클래스 App이 생성자하지만 기능 OnInit이 없습니다주의 : 다음과 같은 예제 중 하나에서 코드입니다. 제가 아는 한, 파이썬 클래스는 __init__ 함수로 구성됩니다.

따라서 OnInit 함수는 특정 클래스 용입니까? 아니면 다른 유형의 생성자입니까?

내가 처음 인 이래로 내 용서를 용서해주십시오. 감사. wx.App.__init__ documentation에 따르면

답변

4

:

당신은 OnInit 시스템, 툴킷 및 wxWidgets에이 완전히 초기화되는 것을 을 보장하기 위해 applicaition 초기화를 할 오버라이드 (override) 할 필요가 있습니다.

->OnInit 방법은 wx.App 파생 클래스이다. 이 말을 계속

당신이 book- 좋은 책을 추천 할 것입니다 "액션 wxPython을"의 코드를 가지고 가정

1

은 (임 확실히 당신은 지금이 빨간색 한)

우리 애플리케이션 클래스에 대해 init() 메소드를 정의하지 않았다는 것을 주목하십시오. 파이썬에서는 부모 메소드 wx.App를 의미합니다. () 초기화는 객체 생성시 자동으로 호출됩니다. 이 은 좋은 것입니다.

class App(wx.App): 
    def __init__(self): 
     # Call the base class constructor. 
     wx.App.__init__(self) 
     # Do something here... 

당신이 잊어 버린 경우 : 당신은 이 같은 기본 클래스의()는 초기화를 호출하는 것을 잊지 마세요, 당신의 자신의 초기화() 메소드를 정의하는 경우 그러면 wxPython이 초기화되지 않고 OnInit() 메서드가 호출되지 않습니다.