我正在尝试使用许多不同的部件和窗口制作一个非常大的应用程序。如果我有一些窗口有自己的文件然后将它们导入主文件,我决定看起来会更清洁。我尝试这样做,但是当我尝试运行该类时,它给出了需要三个参数的错误。我不明白我应该怎么做这样所以任何帮助将不胜感激! 主文件:
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()
答案 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
但是,一旦解决此问题,您的代码仍然无法使用相同的错误运行,因为您没有为parent
或id
提供任何值。在要求python使用它们调用函数之前,您需要为这些变量提供值