如何获取 tkinter 中标签的当前宽度

Mat*_*t.C 4 python tkinter

我在文本中有一个标签,我想获取标签的当前宽度

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()

label = tk.Label(root, text="hello world!")
label.pack()

print("label width: ", label.winfo_width())

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

这是我的问题的一个可执行示例,该方法.winfo_width()始终返回 1。 tkinter 是否有获取标签实际宽度的方法,或者我必须构建它?

Bry*_*ley 9

获取单个小部件宽度的正确方法是使用该winfo_width方法。它将返回任何小部件的宽度。

winfo_width然而,需要了解的重要一点是,它返回渲染小部件的实际宽度。如果它还没有被渲染——要么你没有把它放在窗口中,要么窗口没有机会被绘制——它将返回 1 像素的宽度。

update在您的情况下,您可以在获取宽度之前致电。这将导致在显示器上绘制窗口,从而产生正确的值winfo_width

root.update()
print("label width: ", label.winfo_width())
Run Code Online (Sandbox Code Playgroud)

  • @CoolCloud:`winfo_reqwidth()`和`winfo_reqheight()`将返回请求的宽度和高度。实际宽度是不确定的,直到使用几何管理器将其添加到窗口为止,因为几何管理器可能会增大或缩小小部件。 (4认同)