Mal*_*olm 6 python user-interface text tkinter tkinter-entry
有没有办法在 Tkinter小部件中添加撤消和重做Entry
功能,或者我必须使用单行Text
小部件来实现此类功能?
如果是后者,在配置Text
小部件以充当Entry
小部件时,我应该遵循哪些提示?
一些可能需要调整的功能包括捕获Return
KeyPress
、将选项卡按键转换为更改焦点的请求,以及从剪贴板粘贴的文本中删除换行符。
免责声明:这些只是我想到的关于如何实施它的想法。
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]
Run Code Online (Sandbox Code Playgroud)
运行一个线程,每 X 秒(0.5?)保存一次条目的状态:
history = History()
...
history.add(stringval.get())
Run Code Online (Sandbox Code Playgroud)
您还可以设置事件来保存条目的状态,例如 的压力Return
。
prev = history.prev()
if prev is not None:
stringvar.set(prev)
Run Code Online (Sandbox Code Playgroud)
或者
next = history.next()
if next is not None:
stringvar.set(next)
Run Code Online (Sandbox Code Playgroud)
请注意根据需要设置锁。
归档时间: |
|
查看次数: |
5264 次 |
最近记录: |