Python 防止tkinter标签被长字符串拉伸

Python 防止tkinter标签被长字符串拉伸,python,python-2.7,tkinter,Python,Python 2.7,Tkinter,如何防止Tkinter小部件(特别是标签)的自动加宽?我在代码中有一个标签,我将不同长度的字符串传递给它。如果字符串比列宽(使用网格布局管理器),我更希望将其移动到新行,而不是拉伸列。下面是一些说明问题的代码 import Tkinter class window(Tkinter.Tk): def __init__(self,parent): Tkinter.Tk.__init__(self,parent) self.parent = parent

如何防止Tkinter小部件(特别是标签)的自动加宽?我在代码中有一个标签,我将不同长度的字符串传递给它。如果字符串比列宽(使用网格布局管理器),我更希望将其移动到新行,而不是拉伸列。下面是一些说明问题的代码

import Tkinter

class window(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()

    def initialize(self):
        self.grid()
        self.columnconfigure(0, minsize=50)
        self.columnconfigure(0, minsize=150)
        self.rowconfigure(0,minsize=20)
        self.rowconfigure(1,minsize=20)
        self.rowconfigure(2,minsize=20)

        self.labvar = Tkinter.StringVar()
        self.lab = Tkinter.Label(self,bg='white',relief='groove',
                        textvariable=self.labvar)
        self.lab.grid(row=0,column=0,rowspan=2,sticky='NSEW')
        self.labvar.set("I don't want this to resize (Y dimension) ...")

        self.but = Tkinter.Button(self, text='Click me!',command=self.onbut)
        self.but.grid(row=2,column=0, sticky='NSEW')


    def onbut(self):
        self.labvar.set("I don't want this to resize (Y dimension) ...I'd rather this on a new line!")

if __name__ == "__main__":
    app = window(None)
    app.title('Window')
    app.mainloop()
作为一个简短的补充:避免self.labvar.set(“我不…”)行超过80个字符限制的正确方法是什么?我尝试使用“”,并将其分成两行,但随后字符串也用两行插入标签。

使用:

根据:

标签可以显示多行文本。您可以使用换行符或 wraplength选项使标签自动换行文本。当 包装文本时,您可能希望使用锚定和对齐选项 使事情看起来完全如你所愿

wraplength=

确定标签文本何时应包装成多行。以屏幕单位给出。默认值为0(无包装)


如果为标签指定宽度,则即使内容发生变化,标签也会尽最大努力保持该宽度。如果添加大于宽度的文本,文本将被截断。例如,您可以按如下方式创建标签:

self.lab = Tkinter.Label(self,..., width=40)
如果您希望文本换行,可以定义
wraplength
参数,长度超过该值的文本将换行到下一行。不幸的是,
wraplength
需要屏幕单位(像素)而不是字符宽度,因此您可能需要根据正在使用的字体进行一些计算。或者,等待原始小部件呈现,获取其宽度,并将其用于wraplength

self.lab = Tkinter.Label(self,..., width=40)