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

Yar*_*lav 5 python tkinter python-3.x

我想创建一个类似于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')
Run Code Online (Sandbox Code Playgroud)

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

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

Nae*_*Nae 5

您遇到的情况称为换行,可以通过修改文本小部件的wrap选项来禁用,如下所示:

self['wrap'] = 'none'
Run Code Online (Sandbox Code Playgroud)

或者

self.config(wrap='none')
Run Code Online (Sandbox Code Playgroud)