我想获取 Tkinter.Text 插入点的光标位置(行和列),但针对下面的具体情况。
问题:我的文本编辑器项目需要对 Tkinter.Text 进行自定义撤消/重做。我在下面的测试一和测试二中输入了相同的字符串,但由于 Tkinter 给出的 KeyRelease 事件处理程序中的列变量不一致,撤消操作不一致。问题似乎是我对于第二次测试输入太快,这会产生错误的列值。你能帮我找出问题所在吗?
重现错误的两个测试过程:
测试一
结果:工作正常。(至少对我来说。强调:慢慢打字。)
测试二
结果:获取错误的列并且无法正确撤消。(如果您一开始没有看到错误,请重新启动脚本并重复此步骤,有时快速打字可以正常工作。我通常最多尝试 3 到 4 次就可以得到它。)
问题:这是 Tkinter 中的错误,还是我不理解 Tkinter 中的特定内容,这些内容会为我的撤消/重做记录生成一致的列?
from Tkinter import *
class TextView(Text):
def __init__(self, root):
Text.__init__(self, root)
self.history = History(self)
self.bind("<KeyRelease>", self.keyRelease)
# used to capture a char at a time in keyRelease. If space char is pressed it creates a Word object and adds it to undo/redo history.
self.word = ""
def keyRelease(self, …Run Code Online (Sandbox Code Playgroud)