从Text小部件中删除内容

时间:2012-09-11 14:51:22

标签: python tkinter

在Tkinter中,如何从Text Widget中删除内容。在我的程序中,我用它来显示运行日志。我想限制它显示的行数,即在达到特定行数限制后,我想并行删除旧内容。下面是在Text Widget中进行内容修改的代码片段。如您所见,一旦插入25行,我使用“删除”方法删除1行。但奇怪的是,在显示25行后,它会清除整个小部件,然后在后续调用此类时,添加一行并在一段时间后将其删除。有人可以帮我解决这个问题。

class TextRedirector(object):
    def __init__(self, widget, tag="stdout"):
        self.widget = widget
        self.tag = tag

    def write(self, str):
        global linecount
        linecount = linecount + 1
        self.widget.configure(state="normal")
        self.widget.insert("end", str, (self.tag,))
        self.widget.update()
        if linecount > 25:
             self.widget.delete('1.0', '2.0')
        self.widget.see('end')
        self.widget.configure(state="disabled")

1 个答案:

答案 0 :(得分:1)

看来你的self.linecount变量没有边界地增长,并且没有考虑到你正在删除一些行。所以,一旦你有> 25行,每次调用write时,它将删除一行。

您是否知道可以将滚动条附加到文本小部件?这将允许几乎无限制的文本,并让用户向后滚动以查看旧数据。