滚动条在python tkinter中不起作用

时间:2017-05-23 19:57:52

标签: python tkinter tkinter-canvas

我试图制作100个Entry小部件。它应该使用垂直滚动条滚动。由于框架没有滚动条选项,我使用了画布。但是当我添加Entry小部件滚动条不起作用时。有人可以帮助我解决我犯的错误。

我的代码:

from tkinter import *
root=Tk()
frame=Frame(root,width=300,height=300)
frame.grid(row=0,column=0)
canvas=Canvas(frame,width=300,height=300,scrollregion=(0,0,500,500))

for _ in range(100):
    Entry(canvas).pack()

vbar=Scrollbar(frame,orient=VERTICAL)
vbar.pack(side=RIGHT,fill=Y)
vbar.config(command=canvas.yview)

canvas.config(yscrollcommand=vbar.set)
canvas.pack(side=LEFT,expand=True,fill=BOTH)

root.mainloop()

1 个答案:

答案 0 :(得分:3)

Canvas只能滚动通过.create_window()添加到其中的子窗口小部件。通过.pack()添加的子窗口小部件基本上位于“画布”的顶部,并且不受其控制。

请注意,.create_window().place()几何管理器大致相似:坐标完全取决于您,所以您必须知道您的Entry小部件与空间隔开多远,这将是根据每个系统上使用的确切字体而变化。将一个Frame直接添加到Canvas,然后将所有Entry小部件打包到其中可能会更好 - 这为您提供了自动调整大小的好处,同时仍然允许滚动