2014-12-01 32 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

相关问题