【问题标题】:Scroll bar not working in python tkinter [duplicate]滚动条在python tkinter中不起作用[重复]
【发布时间】:2017-05-23 19:57:51
【问题描述】:

我正在尝试制作 100 个条目小部件。它应该使用垂直滚动条滚动。由于框架没有滚动条选项,所以我使用了画布。但是当我添加条目小部件滚动条不起作用。谁能帮我看看我犯了什么错误。

我的密码:

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()

【问题讨论】:

    标签: python tkinter tkinter-canvas


    【解决方案1】:

    Canvas 只能滚动通过.create_window() 添加到其中的子小部件。通过.pack() 添加的子小部件基本上位于 Canvas 之上,不受其控制。

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

    【讨论】:

    • 我现在明白了。谢谢你指出我。我错过了create_window()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多