首页 > 解决方案 > 向 tk.Button 子类添加 kwarg 时出现问题

问题描述

我想在 tk.Button 子类中添加一个 kwarg。这个想法是我希望能够为这个子类的每个按钮添加一个数字,并且以后能够调用该数字。

import tkinter as tk

class Test(tk.Tk):

    def __init__(self, tasks=None):
        super().__init__()


        self.title("Test")
        self.geometry("400x600")

        self.container = tk.Frame(self)
        self.container.pack()

        self.button1 = My_buttons(self.container, text="Button 1", number=1).grid(row=0, column=0)

        print(self.button1.index) #here is where I would like to be able to print 1

class My_buttons(tk.Button):

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

        super(My_buttons, self).__init__(parent, *args, **kwargs)
        self.number = kwargs.pop("number")


if __name__ == "__main__":
    test = Test()
    test.mainloop()

以上只是告诉我我有一个“_tkinter.TclError:未知选项“-number””错误。任何帮助将不胜感激!谢谢!

标签: pythontkintersuperclasskeyword-argument

解决方案


My_buttons课堂上,移动self.number = kwargs.pop("number")到呼叫之前super()。这样您就不会将number关键字参数传递给Button构造函数。

另外,您应该拆分:

self.button1 = My_buttons(self.container, text="Button 1", number=1).grid(row=0, column=0)

进入:

self.button1 = My_buttons(self.container, text="Button 1", number=1)
self.button1.grid(row=0, column=0)

我猜,替换print(self.button1.index)print(self.button1.number).


推荐阅读