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

时间:2019-04-13 16:56:49

标签: 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()

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

2 个答案:

答案 0 :(得分:1)

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

关于winfo_width的重要一点是,它返回所呈现窗口小部件的 actual 宽度。如果尚未渲染-您尚未将其放置在窗口中,或者没有机会绘制窗口-它将返回1像素的宽度。

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

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

答案 1 :(得分:0)

    root.geometry("800x600")

http://effbot.org/tkinterbook/widget.htm#Tkinter.Widget.winfo_width-method 引用链接说明: winfo_width()[#]

获取此小部件的宽度(以像素为单位)。请注意,如果窗口不是由几何管理器管理的,则此方法返回1。要获取真实值,可能必须先调用update_idletasks。您还可以使用winfo_reqwidth获取小部件的请求宽度(即,小部件本身根据其内容定义的“自然”大小)。

返回:小部件的当前宽度(以像素为单位)。