我正在尝试排列一些标签和 Canvas 小部件。为此,我需要知道我的标签框有多宽。如果用户更改系统字体大小,我希望我的小部件自动调整,所以我不想为每个字符硬编码 12 像素。如果我测量标签小部件,它总是 1 像素宽。在我调用 .update() 之前,我得到了正确的值。但是 .update() 会在屏幕上显示一个带有我的标签的窗口,当我最终打包我的最终小部件时,该窗口就会消失。但这会在我第一次放置小部件时导致不受欢迎的闪光。
那么,如何在不使用 .update() 的情况下测量标签小部件?或者我怎样才能 .update() 一个小部件而不让它显示在屏幕上?如果重要的话,我会使用 Python。
请您参考如下方法:
调用更新前撤回窗口。你想要的命令是wm_withdraw
root = Tk()
root.wm_withdraw()
<your code here>
root.wm_deiconify()
但是,如果您真正的问题是排列小部件,您通常不需要知道小部件的大小。使用网格几何管理器。拿出一张方格纸,把你的小部件放在上面。随意为每个小部件跨越尽可能多的正方形。然后,该设计可以轻松转化为一系列网格调用。
