GOOGLE ADS

суббота, 7 мая 2022 г.

Почему я не могу поместить 2 полосы прокрутки в серый список?

Почему я не могу переместить рамку с помощью pady, но могу с помощью padx??

frame = Frame(window)
frame.pack(side=LEFT,pady=15)
lista_spese = Listbox(frame)
lista_spese.configure(font=("Ink Free",20), width=28, height=8, bg="#4a4a4a", fg="#dedede",relief="solid",borderwidth=4)
etichetta_lista_spese = Label(window,text="Lista delle spese",bg="#64d981",font=("Ink Free",19),relief="solid",borderwidth=1)
etichetta_lista_spese.place(relx=0.02, rely=0.27)
scrollbar = Scrollbar(frame,command=lista_spese.yview)
scrollbar.pack(side=RIGHT,fill=Y)
lista_spese.config(yscrollcommand=scrollbar.set)
scrollbar2 = Scrollbar(frame,command=lista_spese.xview,orient="horizontal")
scrollbar2.pack(side=BOTTOM,fill=X)
lista_spese.config(xscrollcommand=scrollbar2.set)
lista_spese.pack()

Решение проблемы

Лично я думаю, что такие проблемы гораздо легче решить, когда вы группируете все команды макета вместе для данной группы окон. Итак, давайте начнем с этого:

lista_spese.pack(side=TOP)
scrollbar.pack(side=RIGHT,fill=Y)
scrollbar2.pack(side=BOTTOM,fill=X)

Теперь становится ясно, что вы сначала помещаете список вверху, а затем добавляете полосы прокрутки. С pack, порядок важен. Упаковщик выделит всю сторону контейнера для виджета. Таким образом, когда вы упаковываете список вверху, вся верхняя часть пустого фрейма выделяется для списка. По умолчанию ничего больше не может идти сбоку или выше, хотя это правило можно нарушить дополнительными аргументами.

Если вместо этого сначала упаковать полосы прокрутки, а затем упаковать список, все будет работать так, как вы ожидаете.

scrollbar.pack(side=RIGHT,fill=Y)
scrollbar2.pack(side=BOTTOM,fill=X)
lista_spese.pack(side=TOP)

Вы также можете сохранить первоначальный порядок и использовать параметры beforeили afterдля изменения порядка, в котором выделяется пустое пространство:

lista_spese.pack(side=TOP)
scrollbar.pack(side=RIGHT,fill=Y, before=lista_spese)
scrollbar2.pack(side=BOTTOM,fill=X)

Подробный пример работы упаковщика с иллюстрациями см. в следующем объяснении на этом сайте: https://stackoverflow.com/a/57396569/7432.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...