아래의 Joran Beasley가 제공 한 답변. 그가 제공 한 링크가 내 필요를 충족 시켰습니다. 질문 하단의 예.wxpython ID에서 객체에 액세스
wxPython 앱에서 생성 된 각 객체는 id
을 생성합니다. 매개 변수로 지정하거나 id=wx.NewId()
을 사용하여 자동 생성됩니다.
개체의 id
을 사용하면 다른 곳에서 해당 개체를 참조 할 수 있지만이 작업을 수행하는 방법에 대한 간단한 설명은 찾을 수 없습니다.
누구나 올바른 방향으로 나를 가리키거나이 문제에 대해 의견을 개진 할 수 있습니까?
(참고 :. 나는 ID를 통해 이벤트를 바인딩을 찾고 있지 않다, 그게 내가 사방에 발견하는 유일한 튜토리얼)
답변 : 클래스 wx.Window
에서 발견 기능 FindWindowById()
하는 가장 위젯은의 하위 클래스입니다. 객체들 부모에이 함수를 호출하여
는 포인터를 반환 (조부모 등을 시도하지 않은) 객체의 질문에 그 같은 (복사?) : (대화 형 인터프리터)
import wx
app = wx.App()
frame = wx.Frame(None)
but = wx.Button(frame, -1, label='TestButton')
frame2 = wx.Frame(None)
butId = but.GetID()
test = wx.Window.FindWindowById(butId) # Fails with TypeError
# TypeError: unbound method FindWindowById() must be called with Window instance as
# first argument (got int instance instead)
test = Frame2.FindWindowById(butId) # returned either a None object or nothing at all.
test = Frame.FindWindowById(butId) # returned a pionter (copy?) of the object in such a
# manner that the following worked:
label = test.GetLabel()
print label # displayed u'TestButton'
따라서 객체의 id
을 알면 더 멀리 처리 할 수 있도록 객체에 대한 포인터를 얻을 수 있습니다. 분명히 함수가 Joran ;-)
임 확실하지 ... 필자는 일반적으로 클래스에 모든 것을 캡슐화 ... 오랫동안 WX의 extensivly을 사용하고 및 ID로받은 적이없는 그 하 당신이 필요로하는 것들에 접근 할 수 있습니다 ... 생성자 주위에 어떤 종류의 래퍼/팩토리 함수를 써서 나중에 찾아보기 위해 전역 사전에 ID를 저장할 수 있습니다 ... –