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

Joh*_*row 1 python tkinter python-2.7

如何防止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()
Run Code Online (Sandbox Code Playgroud)

作为一个快速的注释:避免self.labvar.set("我不...")线超过80个字符限制的正确方法是什么?我尝试使用"""并将其分成两行但是然后将字符串放入带有两行的标签中.

fal*_*tru 7

使用wraplength选项:

self.lab = Tkinter.Label(self,bg='white', relief='groove',
                         textvariable=self.labvar, wraplength=250)
Run Code Online (Sandbox Code Playgroud)

根据The Tkinter Label Widget文档:

标签可以显示多行文本.您可以使用换行符或使用wraplength选项自行制作标签换行文本.在包装文本时,您可能希望使用锚点和对齐选项来使事物看起来完全符合您的要求.

...

wraplength =

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

在此输入图像描述

在此输入图像描述