滚动条无法在tkinter中正确构建

时间:2019-04-30 16:04:07

标签: python tkinter nested scrollbar

有人可以告诉我我做错了什么吗?滚动条似乎无法反映其绑定到的小部件的区域。

非常感谢。

CardView

1 个答案:

答案 0 :(得分:0)

如果画布为空,则没有任何可滚动的内容。滚动条可以正确反映出来。

您必须向Canvas添加一些内容才能滚动它。

我放了两个大于窗口大小的框架,现在您有了滚动的东西。

将项目放入画布后,您必须使用scrollregion=。或者,您可以在after()显示窗口之后使用scrollregion=来使用tkinter

import tkinter as tk

#def resize():
#    canvas.configure(scrollregion=canvas.bbox("all"))

root = tk.Tk()

frame1 = tk.Frame(root, width=900, height=800)
frame1.pack(expand=True, fill='both')

canvas = tk.Canvas(frame1, width=900, height= 900)
canvas.pack(side='left', fill='both', expand=True)

vsb = tk.Scrollbar(frame1, orient='vertical')
vsb.pack(fill='y', side='right', expand=False)
vsb.configure(command=canvas.yview)

item_1 = tk.Frame(canvas, bg='red', width=500, height=500)
canvas.create_window(0, 0, window=item_1, anchor='nw')

item_2 = tk.Frame(canvas, bg='green', width=500, height=500)
canvas.create_window(500, 500, window=item_2, anchor='nw')

canvas.configure(yscrollcommand=vsb.set, scrollregion=canvas.bbox("all"))

#root.after(100, resize)

root.mainloop()