2013-05-01 30 views
0
#!/usr/bin/python 
import MainPanel 
import wx 

######################################################################## 
class OtherFrame(wx.Frame):##open PDB frame 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     """Constructor""" 
     wx.Frame.__init__(self, None, wx.ID_ANY, "Secondary Frame") 
     panel = wx.Panel(self)##create panel 

     chain = wx.Button(panel, label = "OK", pos=(100,80),size=(53,25))##button create 
     self.Bind(wx.EVT_BUTTON,self.getchain,chain)##bind event to button go to getchain method 


    def getchain(self,event): 
    global flag 
    flag = 1 


import OtherFrame 

####### 
class MainPanel(wx.Panel):##main frame 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self, parent, size = (5000,5000)): 
     """Constructor""" 
     wx.Panel.__init__(self, parent=parent, size = (5000,5000)) 
     self.frame = parent 

     Publisher().subscribe(self.showFrame, ("show.mainframe")) 

    def showFrame(self, msg): 

    #------------------------------------------------------------------ 
     def createfigure(): 

     OtherF = OtherFrame.OtherFrame() 
     OtherF.getchain() 
     print flag 

首先,我大量縮短了我的代碼,因爲它超過了1000行代碼。 我想要做的是獲取在getchain中聲明的變量並在def createfigure中使用它們。他們來自不同的班級。 目前,我正在錯誤getchain() takes exactly 2 arguments (1 given) 有人能告訴我在哪裏,我錯了,以及如何讓我在def getchain(self,event)使用變量和def createfigure使用在函數中聲明的變量並將它們用於不同類中的另一個函數中

+0

你縮進看起來像它需要一點幫助;我會自己糾正它,但如果這是您的原始代碼的外觀,它也需要在那裏糾正。此外,你的問題似乎是你沒有將'event'傳遞給你的'OtherF.getchain()'調用。你在問怎麼才能訪問這個'event'? – BlackVegetable 2013-05-01 20:15:10

回答

-1

使用它們當定義了一個方法,使用「自我」作爲python中的一個參數,它所應用的對象被隱式地作爲參數傳遞。然後,您聲明的任何其他參數必須在括號中明確提供。在您提供的摘錄的倒數第二行,您不提供所需的參數「事件」。

0

你不應該那樣做。如果你確實想要,那麼最好通過預先將它們與「self」進行匹配來創建變量類屬性。所以如果你想訪問另一個類中的「標誌」變量,使它成爲「self.flag」。

然後你可以使用OtherF.flag來訪問它。但是,我認爲如果您需要從另一個課程中學到東西,我建議使用pubsub來傳遞它。這裏有一個教程:

相關問題