具有Button的类作为父级没有属性" tk"

时间:2015-12-15 16:57:54

标签: python class inheritance button tkinter

我最近写了一些代码,其中我想用按钮作为父级创建另一个类(这是因为我想要一个按钮,它有各种普通按钮没有的方法),如下所示:

from tkinter import *
class some_class(Button):
    def __init__(self,parent):
        pass
    #i will put more here 
root = Tk()
button = some_class(root)
button.pack()
mainloop()

但这样做会产生错误:

AttributeError: 'some_class' object has no attribute 'tk'

然后,如果我添加text = "hello"之类的关键字,我会收到错误:

TypeError: __init__() got an unexpected keyword argument 'text'

我对课程相对较新,所以对于为什么会这样做有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您必须在班级中使用Button.__init__来创建tkinter按钮。

from tkinter import *


class MyButton(Button): # CamelCase class name

    def __init__(self, parent):
        Button.__init__(self, parent)
        # or
        #Button.__init__(self, parent, text="hello")


root = Tk()

button = MyButton(root)
button.pack()

root.mainloop()

如果您需要在课堂上使用text="hello"或其他参数 然后使用*args, **kwargs

from tkinter import *


class MyButton(Button):

    def __init__(self, parent, *args, **kwargs):
        Button.__init__(self, parent, *args, **kwargs)


root = Tk()

button = MyButton(root, text='Hello World!')
button.pack()

root.mainloop()