小编jev*_*van的帖子

Python - 如何在 Tkinter 文本小部件中获取光标位置

我想获取 Tkinter.Text 插入点的光标位置(行和列),但针对下面的具体情况。

问题:我的文本编辑器项目需要对 Tkinter.Text 进行自定义撤消/重做。我在下面的测试一和测试二中输入了相同的字符串,但由于 Tkinter 给出的 KeyRelease 事件处理程序中的列变量不一致,撤消操作不一致。问题似乎是我对于第二次测试输入太快,这会产生错误的列值。你能帮我找出问题所在吗?

重现错误的两个测试过程:

测试一

    1. 慢慢地输入这个字符串:“一二三”
    1. 按 F1 查看每个单词的撤消。
  • 结果:工作正常。(至少对我来说。强调:慢慢打字。)

测试二

    1. 尽可能快地输入相同的字符串:“一二三”
    1. 按 F1 查看每个单词的撤消。
  • 结果:获取错误的列并且无法正确撤消。(如果您一开始没有看到错误,请重新启动脚本并重复此步骤,有时快速打字可以正常工作。我通常最多尝试 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)

python tkinter python-2.7

1
推荐指数
1
解决办法
4285
查看次数

标签 统计

python ×1

python-2.7 ×1

tkinter ×1