0

Tkinterで、テキストウィジェットからコンテンツを削除するにはどうすればよいですか。私のプログラムでは、実行中のログを表示するためにそれを使用しました。表示する行数を制限したい。つまり、特定の行数制限に達した後、古いコンテンツを並行して削除したい。以下は、テキストウィジェットでコンテンツを変更するコードのスニペットです。ご覧のとおり、25行が挿入されたら、「delete」メソッドを使用して1行を削除しています。しかし、奇妙なことに、25行が表示された後、ウィジェット全体がクリアされ、その後このクラスを呼び出すと、1行が追加され、しばらくすると削除されます。誰かがこの問題を解決するのを手伝ってくれませんか。

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")
4

1 に答える 1

1

変数がself.linecount際限なく大きくなり、一部の行を削除していることを考慮していないようです。したがって、25行を超えると、が呼び出されるたびにwrite1行が削除されます。

スクロールバーをテキストウィジェットにアタッチできることをご存知ですか?これにより、事実上無制限のテキストが可能になり、ユーザーはスクロールして戻って古いデータを表示できるようになります。

于 2012-09-11T16:05:51.837 に答える