【问题标题】:How do I use Tkinter to create line-wrapped text that fills the width of the window?如何使用 Tkinter 创建填充窗口宽度的换行文本?
【发布时间】:2022-01-08 09:47:34
【问题描述】:

Label 小部件不换行。 Message 小部件将换行文本,但强制它大致为正方形。这是一个例子:

from Tkinter import *

root = Tk()
root.title("hello")

Message(root, text=48*'xxxxx ').grid(row=0, column=0, columnspan=3)

Label(root, text='Name:').grid(row=1, column=0)
Entry(root, width=50).grid(row=1, column=1)
Button(root, text="?").grid(row=1, column=2)

Button(root, text="Left").grid(row=2, column=0)
Button(root, text="Center").grid(row=2, column=1)
Button(root, text="Right").grid(row=2, column=2)

root.mainloop()

我知道我可以使用aspect=700 来更改形状,但我要避免这样的硬编码数字。

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    Tkinter Label 小部件确实会换行。只是默认设置是不换行。要使文本换行,请设置wraplength 参数,其单位是屏幕单位,因此请尝试wraplength=50 并根据需要进行调整。您还需要将justify 设置为LEFTRIGHTCENTER

    【讨论】:

    • 还可以在小部件上设置绑定,以便在小部件更改大小时动态更改环绕长度。
    • @JimDenny,屏幕单位是什么意思?我是新手。
    • 你可以发布一些代码吗?我不知道在哪里插入 WRAPLENGTH 所以这个答案没用。
    • @Brendan 只需将这些参数添加到标签小部件。有关详细信息,请参阅 Uduak Akpan 的回答。
    【解决方案2】:
    welcomenote = Label(root, text="Your long text", font="helvetica 14", 
    wraplength=300, justify="center")
    welcomenote.pack()
    

    【讨论】:

      【解决方案3】:

      尝试以下方法:

      tk.Label(root, textvariable=text, wraplength=500).pack()
      

      这里的 500 是字符被放到下一行之前的像素数量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        相关资源
        最近更新 更多