我有一个程序,其中包含一个函数,用于从文本文件中获取填充标签的信息。如何在加载表单时调用此函数?我试着这样称呼它:
class app:
def __init__(self,master):
#Code to pack frame and load objects
app.updateSIP() #Function I am trying to call
def updateSIP(self):
#Code that pulls data from text file
root = Tk()
root.wm_title('title')
app = App(root)
root.mainloop()
我知道这个函数有效,因为当它从另一个函数调用时它起作用。我得到的错误是:
NameError: global name 'app' is not defined
有什么想法吗?
答案 0 :(得分:1)
这里有两个问题:
您将课程命名为app
但在此处:
app = App(root)
您尝试将其用作App
。 Python区分大小写,因此此操作将引发NameError
。
updateSIP
需要App
的实例作为其第一个参数。但是,您可以这样调用它:
app.updateSIP()
以上内容会引发TypeError
,因为它不会updateSIP
提供App
的实例。
相反,应该这样写:
self.updateSIP()
总而言之,您的代码应该是这样写的:
class App:
def __init__(self,master):
#Code to pack frame and load objects
self.updateSIP() #Function I am trying to call
def updateSIP(self):
#Code that pulls data from text file
root = Tk()
root.wm_title('title')
app = App(root)
root.mainloop()
答案 1 :(得分:0)
您的班级名称为app()
,但您正在使用App()
调用该班级的实例。 Python区分大小写,只需更改:
app = App(root)
为:
app = app(root)
或者,要坚持使用PEP8标准,请将app()
课程重命名为App()
:)