2

我正在尝试排列一些标签和画布小部件。为此,我需要知道我的标签框有多宽。如果用户更改系统字体大小,我希望我的小部件能够自动调整,所以我不想硬编码每个字符 12 个像素。如果我测量标签小部件,它总是 1 像素宽。在我调用 .update() 之前,我会得到正确的值。但是 .update() 会在屏幕上放置一个带有我标签的窗口,当我最终打包最终的小部件时,所说的窗口就会消失。但是,当我第一次放置小部件时,这会导致不受欢迎的闪光。

那么,如何在没有 .update() 的情况下测量标签小部件?或者我怎样才能 .update() 一个小部件而不让它显示在屏幕上?如果重要的话,我正在使用 Python。

4

1 回答 1

1

在调用更新之前撤消窗口。你想要的命令是 wm_withdraw

root = Tk()
root.wm_withdraw()
<your code here>
root.wm_deiconify()

但是,如果您真正的问题是排列小部件,您通常不需要知道小部件的大小。使用网格几何管理器。拿出一张方格纸,把你的小部件放在上面。随意为每个小部件跨越尽可能多的正方形。然后,该设计可以轻松转换为一系列网格调用。

于 2009-02-25T12:32:15.947 回答