Создание списка с прокруткой и кнопками. Получение AttributeError: у объекта 'str' нет атрибута 'tk' - PullRequest
2 голосов
/ 03 апреля 2020

Привет, я новичок в Tkinter. Я пытаюсь создать список с полосой прокрутки и парой кнопок, но получаю ошибку атрибута. Кажется, где-то я переписал мастер. Пожалуйста, помогите:

class advancedListBox:
    def __init__(self, master, listBoxList, label, callbackFunction = None):
        self.listBoxList = listBoxList
        self.label = label
        self.callbackFunction = callbackFunction

        self.entryVar = tk.StringVar()
        self.entryVar.set("Search")
        self.entry = tk.Entry(master)
        self.entry.config(textvariable = self.entryVar)
        self.entry.grid(row = 0,sticky= "E"+"W")
        self.entry.bind('<KeyPress>', self.listBox_On_keypress)
        self.entry.bind('<KeyRelease>', self.listBox_On_keyrelease)




        self.entryLabel = tk.Label(self.label)
        self.entryLabel.grid(row = 1, column = 0, padx =(0,18))

        self.listBox = tk.Listbox(master)
        self.listBox.grid(row = 2, rowspan = 3, column = 0, sticky= "N"+"E"+"S"+"W")
        self.listBox.bind('<<ListboxSelect>>', on_select)
        self.listbox_update(self.listBoxList)


        self.scrollbar = tk.Scrollbar(master, orient="vertical")
        self.scrollbar.config(command=self.listBox.yview)
        self.scrollbar.grid(row = 2, column = 1,rowspan = 3, sticky= "N"+"S")

        self.listBox.config(yscrollcommand=scrollbar.set)
        self.deleteButton = tk.Button(self.master, text="Delete",
                command=lambda lb=architecturesListBox: deleteFromListBox(lb,tk.ANCHOR))

        self.deleteButton.grid(row =5,sticky= "E"+"W"

)

Traceback (последний последний вызов):

Файл "c: / Users / Jerwin / Desktop / Jadon's Stuff / Jadon's Python Программы / Списки с удалением и scrollbar.py ", строка 110, в architecturesListBox = advancedListBox (root, архитектура," Имя - Изображения ")

Файл" c: / Users / Jerwin / Desktop / Jadon's Stuff / Jadon's Python Программы / Списки с удалением и scrollbar.py ", строка 22, в init self.entryLabel = tk.Label (self.label)

Файл "C: \ Users \ Jerwin \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ tkinter__init __. Py", строка 2766, в init Виджет. init (self, master, 'label', cnf, kw)

Файл "C: \ Users \ Jerwin \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ tkinter__init __. py", строка 2292 , в init BaseWidget._setup (self, master, cnf) файл "C: \ Users \ Jerwin \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ tkinter__init __. py", строка 2262, в _setup self.tk = master.tk

* 102 3 * AttributeError: у объекта 'str' нет атрибута 'tk'

1 Ответ

1 голос
/ 03 апреля 2020

self.label - это строка. Вы используете его в качестве родительского для метки, когда делаете self.entryLabel = tk.Label(self.label). Строка не может быть родительской для виджета.

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