Проблема добавления kwarg в подкласс tk.Button - PullRequest
0 голосов
/ 08 февраля 2020

Я хотел бы добавить kwarg в подкласс tk.Button. Идея состоит в том, что я хотел бы иметь возможность добавить номер к каждой кнопке этого подкласса и позже позвонить по этому номеру.

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" ". Любая помощь будет принята с благодарностью! Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2020

В классе 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).

...