2013-03-28 4 views
1

Мой класс,вызов функции из другой функции в классе

class MainFrame(wx.Frame): 
    def __init__(self,parent,ID,title): 
     wx.Frame.__init__(self, parent, ID, title, style=wx.DEFAULT_FRAME_STYLE^ wx.RESIZE_BORDER^wx.MAXIMIZE_BOX,size=(600,500)) 
     wx.Frame.CenterOnScreen(self) 
     .......... 
     .......... 
     panel1 = wx.Panel(panel, wx.ID_ANY,size=(550,200),pos=(25,150)) 
     log = wx.TextCtrl(panel1, wx.ID_ANY, size=(550,200),style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL) 

    def PanelStatus(message): 
     ............... 

Я хочу вызвать метод Panel1 из функции «инициализации» в функции «PanelStatus», а затем вызвать эту функцию в другой класс. Как это сделать? Я очень новичок в программировании. Помогите мне.

ответ

1

Во-первых, вам нужно дать функции PanelStatus новый первый аргумент self. Это потому, что это метод, и методы автоматически получат экземпляр, который они вызывают при передаче в качестве первого аргумента (имя self - это соглашение).

Тогда вы можете позвонить ему из __init__ с self.PanelStatus("some message"). Если другой код в других частях вашей программы имеет ссылку на экземпляр MainFrame, он может позвонить myMainFrame.PanelStatus("some other message").

+0

Спасибо, очень :) – Aramanethota

0

Я сделал что-то подобное, и это сработало для меня.

class MainFrame(wx.Frame): 
    def __init__(self,parent,ID,title): 
     wx.Frame.__init__(self, parent, ID, title, style=wx.DEFAULT_FRAME_STYLE^wx.RESIZE_BORDER^wx.MAXIMIZE_BOX,size=(600,500)) 
     ....... 
     ....... 
     panel1 = wx.Panel(panel, wx.ID_ANY,size=(550,200),pos=(25,150)) 
     self.log = wx.TextCtrl(panel1, wx.ID_ANY, size=(550,200),style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL) 


    def PanelStatus(self,message): 
     self.log.AppendText(message) 

и использовали self.PanelStatus ("мой текст") в другой функции.

Смежные вопросы