在Tkinter中调整滚动条高度?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Tkinter中调整滚动条高度?相关的知识,希望对你有一定的参考价值。
我在Tkinter中创建了一个滚动条,它工作正常,但滚动按钮的大小没有正确缩放(通常它被调整到可滚动区域的大小)。
我将所有小部件都放在.pack()中,因此.grid粘性配置是我想要避免的。
我的问题是:滚动条配置的哪一部分负责缩放高度?
代码示例:
master = Tk()
FrameBIG = Frame(master)
Main = Canvas(FrameBIG,height = 1200,width =1500,scrollregion=Main.bbox("all"))
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
scroll.pack(side="right", fill="y")
Main.pack(side = BOTTOM, anchor = NW,fill="x")
FrameBIG.pack(anchor = W, fill = "x")
答案
代码
Main = Canvas(FrameBIG,height=1200,width=1500,scrollregion=Main.bbox("all"))
是错的,因为Main
还不存在。它应该是
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
但它没有意义,因为Main
画布现在是创建的并且是空的(所以bbox
方法返回None
)
使用时创建滚动条
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
你忘了完成scroll
和Main
之间的两步合约,所以你必须在下面添加一行(就在创建scroll
之后)
Main.configure(yscrollcommand=scroll.set)
现在代码是这样的
from tkinter import *
master = Tk()
FrameBIG = Frame(master)
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
Main.configure(yscrollcommand=scroll.set)
scroll.pack(side="right", fill="y")
Main.pack(side = BOTTOM, anchor = NW,fill="x")
FrameBIG.pack(anchor = W, fill = "x")
master.mainloop()
现在您可以注意到滚动条没有按钮。因为Main
帆布是空的。让我们在Main
画布上添加一些东西
FrameBIG.pack(anchor = W, fill = "x")
# creates a diagonal from coordinates (0,0) to (500,1000)
Main.create_line(0, 0, 500, 1000)
master.mainloop()
现在线路在那里,但滚动按钮还没有,为什么?因为你必须更新scrollregion
画布的Main
。所以,让我们这样做
FrameBIG.pack(anchor = W, fill = "x")
Main.create_line(0, 0, 500, 1000)
Main.configure(scrollregion=Main.bbox("all"))
master.mainloop()
现在它正常运作。这里是完整的代码。
from tkinter import *
master = Tk()
FrameBIG = Frame(master)
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
Main.configure(yscrollcommand=scroll.set)
scroll.pack(side="right", fill="y")
Main.pack(side = BOTTOM, anchor = NW,fill="x")
FrameBIG.pack(anchor = W, fill = "x")
Main.create_line(0, 0, 500, 1000)
Main.configure(scrollregion=Main.bbox("all"))
master.mainloop()
在下一个问题中,使用完整的工作代码发布问题,以显示问题。你会得到更快更好的答案,好吗?祝你今天愉快。
以上是关于在Tkinter中调整滚动条高度?的主要内容,如果未能解决你的问题,请参考以下文章
python tkinter的messagebox能否调整大小或添加滚动条?如何调?