Python:__ init __()需要2个位置参数,但是给出了3个

jon*_*aem 5 python tkinter typeerror

我正在尝试使用Tkinter创建一个简单的UI,但我遇到了一个问题.我的代码看起来像这样:

class UIController(tk.Tk):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        self.frames = {}
        for F in (StartPage, BrowsePage, StudentPage):
            frame = F(self, container)
            self.frames[F] = frame
            frame.title("StudyApp")
        self.showFrame(StartPage)
        self.centerWindow()

    def showFrame(self, c):
        frame = self.frames[c]
        frame.tkraise()

    def centerWindow(self):
        w = 300
        h = 350
        sw = self.master.winfo_screenwidth()
        sh = self.master.winfo_screenheight()
        x = (sw - w)/2
        y = (sh - h)/2
        self.master.geometry('%dx%d+%d+%d' % (w, h, x, y))

class StartPage(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)
        self.pack()

        self.L1 = Label(self, text="Search by credits:")
        self.L1.place(x=18, y=45)

        self.startYear = Entry(self, bd=2)
        self.startYear.place(x=20, y=70)
        self.startYear.bind("<Return>", View.enter(startYear.get()))

        self.quitButton = Button(self, text="Quit", command=sys.exit)
        self.quitButton.pack(side="bottom", padx=5, pady=5, fill=X)

        self.searchButton = Button(self, text="Search")
        self.searchButton.pack(side="bottom", padx=5, pady=0, fill=X)   

class BrowsePage(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)

class StudentPage(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)

root = tk.Tk()
root.resizable(width=False, height=False)
uicontrol = UIController(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

它给出了一个TypeError,构造函数接受2个参数,但给出了3个参数.我想要做的是在框架'容器'中有3页(StartPage,BrowsePage和StudentPage),并根据需要通过按钮推送等来启动它们.我不明白为什么我会收到这个错误.

编辑:

添加了UIController调用.

EDIT2:

添加了页面类StartPage,BrowsePage和StudentPage.后两个类只是此时的外壳.

asp*_*asp 5

我认为这是导致问题的那一行,你不能将self实例传递给构造函数.

frame = F(self, container)
Run Code Online (Sandbox Code Playgroud)

您能否请检查并添加更多信息以了解您要实现的目标.