【问题标题】:tkinter: adapting label texttkinter:调整标签文本
【发布时间】:2020-11-07 20:28:24
【问题描述】:

我有一个框架,我希望它有一定的大小(相对于根窗口)。当我在一个标签中包含足够大的文本以使标签大于包含它的框架时,框架会扩展。如何防止框架扩大并使不适合一行的单词进入下一行。我需要一个不同于简单添加\n 的解决方案,因为在我的实际项目中,文本取决于用户输入。

from tkinter import *

root = Tk()
root.geometry("300x300")

f = Frame(root,width=100, height=50, bg="yellow")
f.place(relx=0.5, rely=0.5, anchor=CENTER)

Label(f, text="this is a veeeeeery looooong text").pack(side=LEFT)

root.mainloop()

【问题讨论】:

  • 您可以关注this
  • 如果标签小于框架,您是否也要防止框架缩小?

标签: python tkinter


【解决方案1】:

如果您希望标签为固定尺寸,您可以为标签指定尺寸。 Tkinter 将尽最大努力满足请求的大小。当然,这意味着标签中的长文本将被截断。

Label(f, width=4, text="this is a veeeeeery looooong text").pack(side=LEFT)

这样,如果框架大于标签所需的空间,它会缩小,但它不会增长,因为标签本身不会增长。

如果您希望标签对框架完全没有影响,您可以关闭框架的几何传播。通过关闭它,您是在告诉 tkinter 遵守请求的框架大小,而不是让子项的大小覆盖它。

f.pack_propagate(False)

这很少是一个好主意,因为 tkinter 非常擅长计算最佳大小,但在极少数情况下它是完全正确的做法。

【讨论】:

  • 谢谢,这是一些很好的知识。但是,我需要整个文本可见。就像,框架在 x 轴上没有太多空间,但在 y 轴上有足够的空间可以使用。当框架中的 x 轴上没有更多空间时,如何制作一个使文本跳转到下一行的标签?
  • @EnriqueMetner:答案在 tkinter 文档中。 Label 小部件有一个 wraplength 选项。
猜你喜欢
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多