Python Tkinter:调整滚动条大小而不调整窗口大小

Python Tkinter:调整滚动条大小而不调整窗口大小,python,tkinter,scrollbar,Python,Tkinter,Scrollbar,我现在有一个滚动条和一个画布在同一层次上。在画布中,有一个使用画布“create_window”方法创建的框架 我有一个绑定,在配置画布时调用该绑定,它将调整scrollregion的大小以适应bbox(“all”)。它可以工作,但只有在调整整个窗口的大小时才能工作(例如,如果我在画布上添加了更多不在其可见区域的小部件,我必须调整窗口的大小才能更改画布的滚动区域) 理想情况下,当新小部件添加到画布的不可见位置(例如,它离开屏幕)时,滚动区域应该立即改变。我目前做得不正确的地方是什么?任何建议都将

我现在有一个滚动条和一个画布在同一层次上。在画布中,有一个使用画布“create_window”方法创建的框架

我有一个绑定,在配置画布时调用该绑定,它将调整scrollregion的大小以适应bbox(“all”)。它可以工作,但只有在调整整个窗口的大小时才能工作(例如,如果我在画布上添加了更多不在其可见区域的小部件,我必须调整窗口的大小才能更改画布的滚动区域)


理想情况下,当新小部件添加到画布的不可见位置(例如,它离开屏幕)时,滚动区域应该立即改变。我目前做得不正确的地方是什么?任何建议都将不胜感激

如果我正确地理解了您的想法(您真的需要在调试问题中包含一个问题!),那么您只在收到
事件时才重新计算滚动区域。这只会在小部件更改大小时触发-在画布上调用
.create_window()
当然不会更改其大小。最简单的解决方案可能是在每次添加小部件时自己显式地执行scrollregion recalc(据我所知,此操作不会触发任何事件)。您可能需要首先调用
.update\u idletasks()
,为新添加的小部件提供计算其自身大小的机会

您需要在内部框架的
事件上添加一个绑定,以同时重置
滚动区域

请创建一个。它可能只需要几十行代码。你有解决这个问题的方法吗?我也面临同样的问题