有没有办法在 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/