如何在一个程序中使用多个wxPython项目文件?

时间:2014-12-01 22:26:28

标签: python file 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:名称“self”未定义。

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 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

错误是您在调用self时将Login.apples()作为参数包含在内。类方法中的第一个参数(通常称为self)不应包含在函数调用中(仅限函数定义),并在Python中隐式处理。它用于处理类方法中对类本身(或其他类属性/函数)的引用。有关self

的信息,请参阅this post

但是,一旦解决此问题,您的代码仍然无法使用相同的错误运行,因为您没有为parentid提供任何值。在要求python使用它们调用函数之前,您需要为这些变量提供值