Python 在Tkinter中调整滚动条高度?

Python 在Tkinter中调整滚动条高度?,python,tkinter,scrollbar,Python,Tkinter,Scrollbar,我在Tkinter中创建了一个滚动条,它工作正常,但是滚动按钮的大小没有被正确缩放(通常它被调整为可滚动区域的大小) 我把我所有的小部件都放在一个.pack()中,因此.grid粘性配置是我想要避免的 我的问题是:滚动条配置的哪个部分负责缩放高度 代码示例: master = Tk() FrameBIG = Frame(master) Main = Canvas(FrameBIG,height = 1200,width =1500,scrollregion=Main.bb

我在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
canvas是现在创建的,并且是空的(因此
bbox
方法返回
None

使用创建滚动条时

scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
您忘记完成
scroll
Main
之间的两步契约,因此您必须添加以下行(创建
scroll
之后)

现在代码是这样的

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()
现在行在那里,但滚动按钮还没有,为什么? 因为您必须更新
主画布的
滚动区域。
所以让我们一起做吧

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()
在下一个问题中,发布一个带有完整工作代码的问题,以显示您的问题。你会得到更快更好的答案,好吗?
祝你有愉快的一天。

请出示一张照片。我们无法调试看不到的代码。滚动条的最终高度是滚动条的配置方式和添加到窗口的方式的一个因素。我认为您正试图让滚动条在窗口正确的情况下改变大小?您使用的是哪个版本的python?2.x还是3.x?(您可以使用
python--version
python3--version
获取版本)您的代码不运行。请提供完整且功能齐全的代码。
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()