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

时间:2015-03-07 20:41:11

标签: python tkinter height scrollbar tk

如何自动调整窗口大小,滚动条不可滚动,如下图所示?我查看了滚动条小部件的每个成员函数,只有.state()在启用滚动条时返回空元组,否则包含'disabled'字符串。所以我一起攻击这个,好吧,不那么漂亮的功能,将高度增加20px,直到'disabled'中有.state()

这是功能:

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 ...

我想要达到的目标:(以适当的方式)   resize chat

1 个答案:

答案 0 :(得分:0)

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

来自官方的tcl / tk文档:

  

...每个元素都是0到1之间的实数;他们在一起   描述窗口中可见的垂直跨度。例如,   如果第一个元素是.6而第二个元素是1.0,则最低   画布区域的40%(由-scrollregion选项定义)是   在窗口中可见...