Python 获取滚动条处于禁用状态所需的高度

Python 获取滚动条处于禁用状态所需的高度,python,tkinter,height,scrollbar,tk,Python,Tkinter,Height,Scrollbar,Tk,如何自动调整窗口大小,使滚动条不可滚动,如下图所示?我查看了scrollbar小部件的每个成员函数,除了启用scrollbar时返回空元组的.state()之外,没有其他任何函数,它包含'disabled'字符串。所以我拼凑了这个,嗯,不是很漂亮的函数,它将高度增加了20px,直到.state()中出现'disabled' 下面是函数: class ChatUI: def __init__(self, master, engine): # ... unrelated c

如何自动调整窗口大小,使滚动条不可滚动,如下图所示?我查看了scrollbar小部件的每个成员函数,除了启用scrollbar时返回空元组的
.state()
之外,没有其他任何函数,它包含
'disabled'
字符串。所以我拼凑了这个,嗯,不是很漂亮的函数,它将高度增加了20px,直到
.state()
中出现
'disabled'

下面是函数:

class ChatUI:
    def __init__(self, master, engine):
        #  ... unrelated code ...
        self.geo_split_pattern = re.compile(r'[x+]')

    #  ... lot of unrelated code ...

    def fittofriendlist(self):
        # resizes window so all contacts are visible. horrible hack but working
        while 'disabled' not in self.friendsscroll.state():
            width = self.geo_split_pattern.split(self.master.geometry())[0]
            height = self.geo_split_pattern.split(self.master.geometry())[1]
            self.master.geometry('{0}x{1}'.format(width, int(height) + 20))
            self.master.update()

    #  ... lot more of unrelated code ...
我想要达到的目标:(通过适当的方式)

关键不是询问滚动条的高度,而是询问它正在控制多少内容可见的小部件。您可以调用
yview
命令,该命令将返回一个元组,描述视图中的内容部分

从tcl/tk官方文档中:

…每个元素都是介于0和1之间的实分数;他们一起 描述窗口中可见的垂直跨度。例如 如果第一个元素为.6,第二个元素为1.0,则 画布面积的40%(由-scrollregion选项定义)是 在窗口中可见