如何强制tkinter文本小部件保持在一行

时间:2017-12-13 12:35:16

标签: python python-3.x tkinter

我想创建一个类似于Label的对象,但我希望它也可以选择进行复制粘贴。我使用Text小部件完成了这个:

class CopyLabel (Text):
    def __init__ (self, master, text = '', font = None):
        if font is None:
            super().__init__(master = master, height = 1,
                             borderwidth = 0, width = len(text),
                             bg = master['background'])
        else:
            super().__init__(master = master, height = 1,
                             borderwidth = 0, font = font,
                             width = len(text), bg = master['background'])
        self.insert(1.0, text)
        self.configure(state = 'disabled')

我最终用网格显示这个小部件。但是,我随机找到最后1或2个字符未显示。在研究这个时,似乎Text小部件将这些字符拆分为一个新行(选择文本时,可以向下拖动以查看第二行)。最大的问题是这种分裂的不可预测性(我尝试做宽度= len(文本)+ 2,但我偶尔也会得到这种分裂行为)。有没有办法纠正这种行为?

编辑:设置wrap ='无'修复了行拆分行为,但文本仍然被截断。现在我必须水平滚动而不是垂直滚动以查看文本,但我想这与我提出的问题不同。

1 个答案:

答案 0 :(得分:2)

您遇到的内容称为换行,可以禁用修改文本窗口小部件的wrap选项,如下所示:

self['wrap'] = 'none'

self.config(wrap='none')