标签框不支持滚动。因此,对您的问题的简短回答是“您不能”。这听起来很明显,但是如果小部件的文档未说它支持滚动,则它不支持滚动。
但是,有一个简单的解决方案。首先,将画布作为子级添加到labelframe并将其打包,以使其充满labelframe。将滚动条附加到画布,并将它们也添加到标签框。然后在画布中嵌入一个框架,将小部件添加到该内部框架中,然后在添加所有内部标签和条目之后调整画布的滚动区域以匹配该框架的大小。
听起来很复杂,但实际上非常简单。
至于在调用时重新创建窗口小部件
load_message,调用
grid_forget只会将其从视图中删除,实际上并不会破坏这些窗口小部件。随着时间的流逝,您可能最终会获得数百个不可见的小部件,这几乎肯定不是您想要的。
相反,您想先销毁所有现有的小部件。如果他们都在同一个父级中,这很容易,因为您可以要求父级列出其所有子级的列表。只需遍历该列表即可删除每个孩子,然后添加任何新孩子。甚至更简单的解决方案是销毁并重新创建包含标签和条目的内部框架。删除窗口小部件时,所有子窗口小部件都会自动销毁。因此,删除该内部框架,创建一个新框架,然后再次添加标签和条目。



