Python TypeError:super()参数1必须是类型,而不是classobj

Python TypeError:super()参数1必须是类型,而不是classobj,python,python-2.7,tkinter,super,Python,Python 2.7,Tkinter,Super,这就是错误: from Tkinter import * class Application(Frame): def __init__(self, master): super(Application, self).__init__(master) self.grid() self.bttnClicks = 0 self.createWidgets() def createWidgets(self):

这就是错误:

from Tkinter import *

class Application(Frame):
    def __init__(self, master):
        super(Application, self).__init__(master)
        self.grid()
        self.bttnClicks = 0
        self.createWidgets()

    def createWidgets(self):
        self.bttn = Button(self)
        self.bttn["text"] = "number of clicks"
        self.bttn["command"] = self.upadteClicks
        self.bttn.grid()


    def upadteClicks(self):
        self.bttnClicks += 1
        self.bttn["text"] = "number of clicks " + str(self.bttnClicks)

root = Tk()
root.title("button that do something")
root.geometry("400x200")
app = Application(root)
root.mainloop()`
我做错了什么?代码在Python3.XX中运行良好,但在Python2.XX中却没有。TKinter.Frame是Python2上的一个老式类。像“超级”这样的功能无法使用它。请直接参考框架初始化:

super(Application, self).__init__(master)
TypeError: super() argument 1 must be type, not classobj
Frame不是新样式的类,但super需要新样式的类才能工作。在python-3.x中,一切都是一个新样式的类,super将正常工作

您需要在python 2中硬编码超类和方法:

Frame.__init__(self, master)
就像他们在公园里做的那样

Frame.__init__(self, master)