运行 起始文件时,main() 创建未定义的错误
main() creates undefined error when running starter file
我将使用我的导师提供给我的这个入门文件编写一个程序。问题是她给我们的文件没有 运行。我不知道这是因为我正在使用 IDLE,还是代码在某些操作系统上只有 运行s。
例如,我使用Windows,但我的老师同时使用Windows和Linux系统。我无法找到她来解决问题,所以我希望你们能。
目前,当我 运行 启动文件时,出现错误:
TypeError: main() is not defined.
当我在程序底部将 main()
切换为 GUI()
时,出现新错误:
TypeError: __init__() missing 1 required positional argument: 'rootWindow'
这是完整代码:
from tkinter import*
from tkinter import tk
class GUI:
def __init__(self,rootWindow):
self.label = ttk.Label(rootWindow, text="Hellow World!")
self.label.grid(row=0,column=0)
self.button1=ttk.Button(rootWindow,text="Hello",command=self.hello)
self.button1.grid(row=0,column=1)
self.button2=ttk.Button(rootWindow,text="Bye",command=self.bye)
self.button2.grid(row=0,column=2)
def bye(self):
self.label.config(text="GoodbyeWorld!")
def hello(self):
self.label.config(text="HelloWorld!")
def main():
global label
rootWindow = Tk()
gui = GUI(rootWindow)
rootWindow.mainloop()
main()
这段代码有两个问题:
你需要取消 main
函数的缩进,否则你不能只调用 main
因为它是 GUI
[=36 的一部分=].
导入搞砸了。您需要 import tkinter as ttk
,否则 ttk
未定义,并且 import Tk
而不是 import tk
。
请注意,我使用的是 Python 3,所以如果您使用的是 Python 2,您的可能会略有不同。
更正后的完整代码如下:
import tkinter as ttk
from tkinter import Tk
class GUI:
def __init__(self,rootWindow):
self.label = ttk.Label(rootWindow, text="Hellow World!")
self.label.grid(row=0,column=0)
self.button1=ttk.Button(rootWindow,text="Hello",command=self.hello)
self.button1.grid(row=0,column=1)
self.button2=ttk.Button(rootWindow,text="Bye",command=self.bye)
self.button2.grid(row=0,column=2)
def bye(self):
self.label.config(text="GoodbyeWorld!")
def hello(self):
self.label.config(text="HelloWorld!")
def main():
global label
rootWindow = Tk()
gui = GUI(rootWindow)
rootWindow.mainloop()
main()
我将使用我的导师提供给我的这个入门文件编写一个程序。问题是她给我们的文件没有 运行。我不知道这是因为我正在使用 IDLE,还是代码在某些操作系统上只有 运行s。
例如,我使用Windows,但我的老师同时使用Windows和Linux系统。我无法找到她来解决问题,所以我希望你们能。
目前,当我 运行 启动文件时,出现错误:
TypeError: main() is not defined.
当我在程序底部将 main()
切换为 GUI()
时,出现新错误:
TypeError: __init__() missing 1 required positional argument: 'rootWindow'
这是完整代码:
from tkinter import*
from tkinter import tk
class GUI:
def __init__(self,rootWindow):
self.label = ttk.Label(rootWindow, text="Hellow World!")
self.label.grid(row=0,column=0)
self.button1=ttk.Button(rootWindow,text="Hello",command=self.hello)
self.button1.grid(row=0,column=1)
self.button2=ttk.Button(rootWindow,text="Bye",command=self.bye)
self.button2.grid(row=0,column=2)
def bye(self):
self.label.config(text="GoodbyeWorld!")
def hello(self):
self.label.config(text="HelloWorld!")
def main():
global label
rootWindow = Tk()
gui = GUI(rootWindow)
rootWindow.mainloop()
main()
这段代码有两个问题:
你需要取消
main
函数的缩进,否则你不能只调用main
因为它是GUI
[=36 的一部分=].导入搞砸了。您需要
import tkinter as ttk
,否则ttk
未定义,并且import Tk
而不是import tk
。
请注意,我使用的是 Python 3,所以如果您使用的是 Python 2,您的可能会略有不同。
更正后的完整代码如下:
import tkinter as ttk
from tkinter import Tk
class GUI:
def __init__(self,rootWindow):
self.label = ttk.Label(rootWindow, text="Hellow World!")
self.label.grid(row=0,column=0)
self.button1=ttk.Button(rootWindow,text="Hello",command=self.hello)
self.button1.grid(row=0,column=1)
self.button2=ttk.Button(rootWindow,text="Bye",command=self.bye)
self.button2.grid(row=0,column=2)
def bye(self):
self.label.config(text="GoodbyeWorld!")
def hello(self):
self.label.config(text="HelloWorld!")
def main():
global label
rootWindow = Tk()
gui = GUI(rootWindow)
rootWindow.mainloop()
main()