我在根窗口中有一个Frame
(根窗口大小是通过.geometry()
设置的),其中我有两个Label
填充Frame
。我想知道Label
的当前大小,以便调整其文本的字体大小。
I tried .winfo_reqheight()
但我无法理解返回的值。以下示例举例说明了我面临的问题(三个问题以粗体显示):
import Tkinter as tk
root = tk.Tk()
root.geometry("200x200")
# top level frame, containing both labels below. Expands to fill root
f = tk.Frame(root)
f.pack(expand=True, fill=tk.BOTH)
# the condition for the two cases mentioned in the text below
if True:
text = ""
else:
text = "hello\nhello\nhello\nhello"
# two labels, the top one's txt will be changed
l1 = tk.Label(f, text=text, font=('Arial', 40), background="green")
l1.pack(expand=True, fill=tk.BOTH)
l2 = tk.Label(f, text="hello", font=('Arial', 15), background="blue")
l2.pack(expand=True, fill=tk.BOTH)
# just in case, thank you https://stackoverflow.com/users/2225682/falsetru
for i in [f, l1, l2]:
i.update_idletasks()
print("top label: reqheight = {0} height = {1}, bottom label: reqheight = {2} height = {3}".format(
l1.winfo_reqheight(), l1.winfo_height(),
l2.winfo_reqheight(), l2.winfo_height()
))
root.mainloop()
True
(空文本字符串)
和输出
top label: reqheight = 66 height = 1, bottom label: reqheight = 29 height = 1
所有小部件都设置为展开,所以当窗口高200像素时,他们的总高度是66 + 29 = 95怎么样?
如何获得i)的高度为空,ii)填充两种方式和iii)展开Label
- 我将保留作为参考(如果{{ 1}}增长我会知道它不能超过那个参考)?
Label
(多行文本字符串)
和
False
为什么顶级标签会破坏底部标签?是否有一种机制可以尽可能地扩展'但是可以改变其他小部件?&#39 ;
答案 0 :(得分:0)
reqheight是请求高度 - 标签想要的高度,无论它放在窗口中的方式如何。它是几何管理器询问时所要求的大小"您需要多少空间?"。根据您使用包,地点或网格的方式或包含窗口的大小,此值不会发生变化。
如果您想要实际身高,请使用winfo_height。