首页 > 解决方案 > Tkinter,RecursionError:调用 Python 对象时超出最大递归深度

问题描述

我正在构建一个 tkinter-window-maker,但在父类中的“new_window”方法时遇到了问题。我可以稍微修改它并将其复制粘贴到每个子类中它可以正常工作但它似乎效率低下,如果我将方法放在父类中但是(下面的代码)它会达到最大递归深度。怎么了?

代码:

from tkinter import *
import sys

class Window():
    def __init__(self, master, x, y, title):
        self.master = master
        master.title(title)
        master.geometry("{}x{}".format(x,y))

    def new_window(self, class_name):
        self.master.destroy()
        class_name = getattr(sys.modules[__name__], str(class_name))
        root=Tk()
        class_name(root)
        root.mainloop()

class Login(Window):
    def __init__(self, master):
        super().__init__(master, 200, 200, "Login")
        Button(master, text="NEXT",width=7,height=1,command=self.new_window("Home")).grid(row=1,column=1)

class Home(Window):
    def __init__(self, master):
        super().__init__(master, 200, 200, "Home")
        Button(master, text="NEXT",width=7,height=1,command=self.new_window("Login")).grid(row=1,column=1)

def main():
    root=Tk()
    Login(root)
    root.mainloop()

if __name__ == '__main__':
    main()

标签: pythontkinter

解决方案


推荐阅读