Python 2.7 super() error
本问题已经有最佳答案,请猛点这里访问。
正在尝试使用super()创建tkinter窗口。我得到这个错误:
super(应用程序,自身)。初始化(master)类型错误:必须是类型,而不是ClassObj
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import Tkinter as tk class Application(tk.Frame): def __init__(self, master): super(Application, self).__init__(master) self.grid() def main(): root = tk.Tk() root.geometry('200x150') app = Application(root) root.mainloop() main() |
虽然
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import Tkinter as tk class Application(tk.Frame, object): def __init__(self, master): super(Application, self).__init__(master) self.grid() def main(): root = tk.Tk() root.geometry('200x150') app = Application(root) root.mainloop() main() |
只要tkinter类不尝试任何需要成为旧样式类才能工作的行为(我强烈怀疑这一点),这就可以工作。我用Python2.7.7测试了上面的示例,没有任何问题。
这里建议进行这项工作。这种行为默认情况下也包括在Python3中(在链接中引用)。