하나의 상단 패널과 수직 스플리터 윈도우가있는 프레임이있는 파이썬 GUI가 있습니다. splitterwindow의 각 Panel에 대해 두 개의 Panel 클래스를 작성했습니다. 하나는 목록 상자이고 다른 하나는 격자입니다. 각 클래스에는 몇 개의 버튼이 있습니다.Python, 다른 클래스 내부에서 인스턴스 메서드를 호출하는 방법
은, 현재 나는 다음과 같은 오류를 받고 있어요 때문에 클래스 내부 event.bind
및 기능 코드를 연결 버튼을 유지하고 작동하게하는 방법이있다인가 :
AttributeError: 'Panel' object has no attribute 'm_dirPicker1'
는 내가 알고 싶은 보고 된 상황에서 가장 좋은 방법입니다. 나는 당신의 Source_Panel
예를 내가 참조거야 (A MyFrame
인스턴스의 자식이 될 것이라고 가정하는거야
class Frame (wx.Frame):
...
self.m_datapanel = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL)
self.m_filespanel = Source_Panel(self.m_splitter1)
self.m_gridpanel = Data_Viewer(self.m_splitter1)
class Source_Panel (wx.Panel):
...
# Connect Events
self.m_listBox.Bind(wx.EVT_LISTBOX_DCLICK, self.m_listBoxOnListBoxDClick)
self.m_clearbutton.Bind(wx.EVT_BUTTON, self.m_clearbuttonOnButtonClick)
self.m_importbutton.Bind(wx.EVT_BUTTON, self.m_importbuttonOnButtonClick)
self.m_showdata.Bind(wx.EVT_BUTTON, self.m_showdataOnButtonClick)
def __del__(self):
pass
# Virtual event handlers, overide them in your derived class
def m_listBoxOnListBoxDClick(self, event):
event.Skip()
def m_clearbuttonOnButtonClick(self, event):
event.Skip()
def m_importbuttonOnButtonClick(self, event):
src_directory = frame.m_datapanel.m_dirPicker1.GetTextCtrlValue()
def m_showdataOnButtonClick(self, event):
event.Skip()
class Data_Viewer (wx.Panel):
...
네 말이 맞아. 도와 줘서 고마워. 나는 뭔가 유용한 것을 읽을 때 또 다른 주제를 찾고있었습니다. 또한 사용할 수 있습니다 : self.m_frame = 프레임 (없음) 다음 src_directory = self.m_frame.m_dirPicker1.GetTextCtrlValue(). 내가 봤다 정확히 똑같은 것을 볼 수 ... 친절 관해서 .Ivo – TMoover
위대하다, 'wx.Panel'을 서브 클래스 화하기 때문에'Source_Panel'을 인스턴스화 한 후에'self.Parent' 속성이 이미 존재해야합니다. 새로운 속성'self.m_frame'을 지정할 필요가 없습니다. –
지적 해 주셔서 감사합니다. 친절합니다. Ivo – TMoover