Ошибка при привязке привязки списка tkinter к методу из того же класса (Python) - PullRequest
0 голосов
/ 28 декабря 2018

Я написал класс для создания объектов Listbox, я хочу связать поле со списком с помощью метода того же класса, но получаю ошибку атрибута.что я тут не так делаю ??

class ListObj(tkinter.Listbox):

    def __init__(self, window, cname, r, c, rs, cs, sticky, bg, padx=5, pady=5, ipadx=0, ipady=0, **kwargs):
        self = tkinter.Listbox(window)
        self.grid(row=r, column=c, rowspan=rs, columnspan=cs, sticky=sticky, padx=padx, pady=pady,
                  ipadx=ipadx, ipady=ipady)
        self.bind('<<ListboxSelect>>', self.on_select)

    def on_select(self):
        pass

вывод:

AttributeError: 'Listbox' object has no attribute 'on_select'

1 Ответ

0 голосов
/ 28 декабря 2018

Строка, вызывающая проблему: self = tkinter.Listbox(window).Вам не нужно указывать себе, что это список, потому что он уже наследует список в определении класса.

Сделайте это вместо:

class ListObj(tkinter.Listbox):
    def __init__(self, window, **kwargs):
        super().__init__()
        self.bind('<<ListboxSelect>>', self.on_select)

    def on_select(self):
        pass

Вы должны использовать grid для ссылочной переменной внекласс.Это не лучший вариант использовать менеджер геометрии внутри класса.

var_name = ListObj(var1, var2, var2 ...)

var_name.grid(configs....)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...