运行 起始文件时,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()

这段代码有两个问题:

  1. 你需要取消 main 函数的缩进,否则你不能只调用 main 因为它是 GUI [=36 的一部分=].

  2. 导入搞砸了。您需要 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()