使用place方法在框架中构建滚动条

时间:2017-05-05 01:52:47

标签: python tkinter

对于乱七八糟的代码,我很抱歉试图解决这个侧边栏感到有些慌张。我正在尝试使用Tkinter在框架中构建侧边栏并显示侧边栏,并且条目填充到窗口中,尽管滚动条不构建且不向下滚动框架。我正在努力弄清楚如何使它发挥作用,并且非常感谢一些帮助。

List<SelectListItem> list = new List<SelectListItem>();
addCatToList(list, 0, db.CategorySet.Where(x => x.ParentCategory == null));

1 个答案:

答案 0 :(得分:0)

问题中的代码很长,无法按原样执行,因此我只是举例说明如何通过将框架嵌入画布来滚动框架。

为了让滚动条正确滚动框架,每次框架大小发生变化时,都需要更新画布的scrollregion属性。

import tkinter as tk

def on_configure(event):
    canvas.configure(scrollregion=canvas.bbox('all'))

root = tk.Tk()

canvas = tk.Canvas(root)
canvas.place(relx=0, rely=0, relheight=1, relwidth=1)

frame = tk.Frame(canvas)
# resize the canvas scrollregion each time the size of the frame changes
frame.bind('<Configure>', on_configure)
# display frame inside the canvas
canvas.create_window(0, 0, window=frame)

scrolly = tk.Scrollbar(root, command=canvas.yview)
scrolly.place(relx=1, rely=0, relheight=1, anchor='ne')
canvas.configure(yscrollcommand=scrolly.set)

# populate the frame
for i in range(20):
    tk.Label(frame, text='Label %i' % i).pack()

root.mainloop()

如果您在代码中修改此示例,请告诉我。