2014-12-01 33 views
0

我想用很多不同的部件和窗口製作一個很大的應用程序。我決定,如果我有一些窗口有自己的文件,然後將它們導入到主文件中,它會看起來更清潔。我試圖做到這一點,但是當我嘗試運行該類時,它會給出需要三個參數的錯誤。我不明白我應該怎麼做,所以任何幫助將不勝感激! 主文件:如何在一個程序中使用多個wxPython項目文件?

import wx 
import Login 
Login.apples(self,parent,id) 
class oranges(wx.Frame): 
    def __init__(self,parent, id): 
     wx.Frame.__init__(self,parent,id,"Mail",size=(700,700)) 
     self.frame=wx.Panel(self) 
if __name__=="__main__": 
    app=wx.App(False) 
    window=oranges(parent=None, id=-1) 
    window.Show() 
    app.MainLoop() 

我得到一個NameError:名字 「自我」 沒有定義。

import wx 
class apples(wx.Frame): 
    def __init__(self,parent,id): 
     wx.Frame.__init__(self,parent,id,"Login to Mail",size=(400,400)) 
     self.frame=wx.Frame(self) 



if __name__=="__main__": 
    app=wx.App(False) 
    window=apples(parent=None, id=-1) 
    window.Show() 
    app.MainLoop() 

回答

2
import wx 
import Login 
#Login.apples(self,parent,id) #this line wont work ... there is no self here... 
#see below in the if __name__ == "__main__" part 
class oranges(wx.Frame): 
    def __init__(self,parent, id): 
     wx.Frame.__init__(self,parent,id,"Mail",size=(700,700)) 
     self.frame=wx.Panel(self) 
if __name__=="__main__": 
    app=wx.App(False) 

    window=oranges(parent=None, id=-1) 
    other_window = Login.apples(parent=None,id=-1) 
    window.Show() 
    other_window.Show() 
    app.MainLoop() 
+0

登錄窗口永遠不會打開。有任何想法嗎? – user3818089 2014-12-01 22:43:34

+0

好的,謝謝它現在的作品,除了窗口顯示在灰色的白色內,我不能添加按鈕或任何東西。 – user3818089 2014-12-01 22:49:57

+1

我猜這可能是由於這一行或東西'self.frame = wx.Frame(self)'...也許嘗試'self.panel = wx.Panel(self)'作爲框架是一個有趣的選擇.. – 2014-12-01 22:53:14

1

的錯誤是,你包括self爲您的來電Login.apples()參數。類方法中的第一個參數(通常稱爲self)不應包含在函數調用(僅限函數定義)中,並且會在Python中進行隱式處理。它用於處理類方法中的引用(或其他類屬性/函數)。見this post的信息,self

然而,一旦你解決這個問題,您的代碼將仍然無法與同樣的錯誤,因爲你沒有給出價值parentid運行。你需要提供這些變量的值,然後讓python調用它們的函數

+0

那麼我應該在參數中放置什麼呢? – user3818089 2014-12-01 22:37:38

+1

無論你希望他們有什麼值。 – wnnmaw 2014-12-01 22:40:23

相關問題