我最近写了一些代码,其中我想用按钮作为父级创建另一个类(这是因为我想要一个按钮,它有各种普通按钮没有的方法),如下所示:
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'
我对课程相对较新,所以对于为什么会这样做有任何帮助将不胜感激。
答案 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()