有没有办法在 Tkinter Entry 小部件中添加撤消和重做功能,或者我必须使用单行 Text 小部件来实现此类功能?

如果是后者,在配置 Text 小部件以充当 Entry 小部件时,我应该遵循什么提示?

一些可能需要调整的功能包括捕获 Return KeyPress 、将 Tab 按键转换为更改焦点的请求,以及从剪贴板粘贴的文本中删除换行符。

最佳答案

免责声明:这些只是我关于如何实现它的想法。

class History(object):

    def __init__(self):
        self.l = ['']
        self.i = 0

    def next(self):
        if self.i == len(self.l):
            return None
        self.i += 1
        return self.l[self.i]

    def prev(self):
        if self.i == 0:
            return None
        self.i -= 1
        return self.l[self.i]

    def add(self, s):
        del self.l[self.i+1:]
        self.l.append(s)
        self.i += 1

    def current(self):
        return self.l[self.i]

运行一个线程,每 X 秒(0.5?)保存条目的状态:
history = History()
...
history.add(stringval.get())

您还可以设置事件来保存 Entry 的状态,例如 Return 的压力。
prev = history.prev()
if prev is not None:
    stringvar.set(prev)

或者
next = history.next()
if next is not None:
    stringvar.set(next)

注意根据需要设置锁。

关于python - 在 Tkinter Entry 小部件中撤消和重做?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4146971/

10-11 22:25
查看更多