Это я пытаюсь получить ListBox с полосой прокрутки. Я прочитал около 20 других ответов на этом сайте, и ни один из них, похоже, не работает в моей ситуации, поэтому я должен спросить свой собственный.
У меня есть виджет LabelFrame, в котором у меня есть несколько меток и виджет ListBox. Я хочу, чтобы виджет ListBox имел полосу прокрутки. Кажется, я не могу заставить его работать.
Вот код ошибки:
self.lbDates = tk.Listbox(master=group, width=12)
self.lbDates.grid(row=3, column=1, padx=3, pady=3)
self.scrollDates = tk.Scrollbar(self.lbDates, orient="vertical")
self.scrollDates.config(command=self.lbDates.yview)
self.scrollDates.grid(row=3, column=1)
self.lbDates.config(yscrollcommand=self.scrollDates.set)
Несколько вопросов: должна ли полоса прокрутки находиться в одном и том же месте (то есть в той же строке сетки) и столбец) как виджет ListBox? Я предполагал, что так и должно быть, но учитывая, сколько у меня было проблем с этим, я чувствую, что должен спросить.
Я должен сказать, что окно списка заполняется нажатием кнопки в другом месте. Без полосы прокрутки эта дата заполнена правильно, поэтому я предполагаю, что проблема не в этом.
Что происходит, когда я запускаю этот код? Ну, я не вижу ListBox, но я вижу полосу прокрутки. Теперь, когда там должны быть данные (и я знаю, потому что я их заполняю), я вижу то, что вы можете себе представить, это правильная полоса прокрутки, хотя ListBox либо невидим, либо скрыт, либо еще что-то. Он мигает на долю секунды, когда он заполнен, но затем снова скрывается.
Я могу показать вам, на самом деле, пример этого.
![enter image description here](https://i.stack.imgur.com/8NroQ.jpg)
У верхнего нет данных, а у второго есть данные. Конечно, вы не можете видеть данные, но вы можете видеть, что они должны быть там. И если я уберу полосу прокрутки, я получу ожидаемые данные в виджетах ListBox. Я хотел бы показать изображение момента, которое оно заполняет, прежде чем оно исчезнет, но оно выглядит как один кадр, и я не могу его уловить.
Я уверен, что моя ошибка здесь должна быть чем-то очень простым, и Я очень надеюсь, что кто-то может помочь. Я использую tkinter для виджетов и Python 3.7.
Edit: я сделал некоторые изменения, как предложено ниже, так что мои ListBox и Scrollbar теперь существуют в Frame и этот Frame находится в объекте LabelFrame. Следующее:
fr = tk.Frame(master = group)
fr.grid(row=4, column=1)
self.lbDates = tk.Listbox(master=fr, width=12)
self.lbDates.pack()
self.scrollDates = tk.Scrollbar(master=self.lbDates, orient="vertical")
self.scrollDates.config(command=self.lbDates.yview)
self.scrollDates.pack()
self.lbDates.config(yscrollcommand=self.scrollDates.set)
К сожалению, нет никакой разницы, и я, похоже, испытываю те же проблемы, что и раньше.