@Romain_bucha

Как использовать scrollbar в Tkinter Python 3 для вывода списка из БД?

Пытаюсь установить scrollbar на базе Tkinter Python 3 в GUI своей проги (самодельная бд), пока что не получается победить. Выводится рамка скроллбара без бегунка, но даже рамка выводится не на высоту отображаемого окна, а на всю высоту выведенного списка, часть которого скрыта из-за разрешения окна. Прикрепляю скрин

F54by.jpg

Граф. интерфейс должен выводить список из бд, можно отметить галками строки, по нажатию на пелпк исправить или подтвердить строки меняют статус, идея очень простая.

Начитавшись форумов пришел к выводу что нужно использовать frame_main для всего окна, в нем будут установлены grid-м frame_canvas и кнопки, а уже в frame_canvas pack-м будут установлены canvas для вывода списка из бд и scrollbar.
(прикрепляю мою схему моей логики)

Bpyea.jpg

Но по итогу отображается лишь рамка без бегунка, а также высота рамки отображена на всю высоту списка, и не ограничена высотой окна интерфейса.

DivP5.jpg

Подскажите, в чем я не прав и помогите победить скроллбар

Код функции:
def admintable();
    import pickle
    global flsp1, root4, kolivanov, kolpetrov;

     #открытие файлов бд

    root4=Tk()
    root4.geometry(‘1100x900-0-0’)
    root4.title(“Администратор”)

    frame_main=Frame(root4)
    frame_main.grid(row=0, column=0)

    frame_canvas=Frame(frame_main)
    frame_canvas.grid(row=0, column=0)

    canvas=Canvas(frame_canvas)
    canvas.pack(side=RIGHT)

    scroll_canv=Scrollbar(frame_canvas, orient=VERTICAL)
    scroll_canv.pack(side=LEFT, fill=“y”)
    scroll_canv.config(command=canvas.yview)
   
     #вывод списка из бд в canvas

    but_0=Button(frame_main, text=‘Подтвердить’, command=ispoladm)
    but_1=Button(frame_main, text=‘Исправить’, command=ispolndm_ipsr)
    but_0.grid(row=0, column=1, sticky=‘nw’)
    but_1.grid(row=0, column=1)

    fraim_main.config(width=1100, height=900)
    fraim_canvas.config(width=1000, height=600)
    canvas.config(width=1100, height=500, yscrollcommand=scroll_canv.set)

    root4.mainloop()
  • Вопрос задан
  • 417 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы