我需要创建自己的事件处理程序,其中包含文本小部件中的标准向上/向下箭头键功能。但是,我必须以某种方式进行编程。
你可能认为你可以添加/减去一行,它会按预期上升/下降。嗯,这是真的。但是,如果你有自动换行或其他东西,你会比你想象的更多。另外,箭头键可能不会在晚上上升,因为它通常会自动判断自动换行(看到它会保留在同一个角色上,无论该角色在哪里)。
那么,我如何模拟Tkinter中的常规功能?
这就是为什么我需要重新编程向上箭头键(也是向下) - 这对我的问题不是必不可少的,但是因为人们喜欢提出并提出替代方法,所以你可以去:
我正在创建一个文本编辑器,它在Tkinter Text小部件中执行操作的自然方式有一个我打算消除的错误。问题是,如果您选择带有shift-home或其他内容的文本,然后尝试使用shift-up(或向下移动,或者向左移动控制或向右移动控制权)选择更多文本,那么它可能会选择或取消选择一些不恰当的东西,取决于你如何做。它应该很容易固定控制左移和右移控制 - 但我有升档和降档的定位问题。我已经将home,end,left,right,shift-left和shift-right重新编程为类似的原因(而且Tkinter很棒,因为你实际上可以重新编程这样的东西)。
我正在使用Python 3.4。
我想也许获得插入的x,y坐标可能会有所帮助。但是我没有看到任何东西(只是鼠标坐标)。
答案 0 :(得分:1)
我不完全确定你遇到的问题是什么。您是否知道可以要求文本小部件计算上一行或下一行的索引,并考虑包裹的行或忽略包装?
来自tk text widget docs索引修饰符:
+ count?submodifier?线
通过计数线向前调整索引,在行内保留相同的字符位置。如果有 包含当前索引的行之后的行数少于计数, 然后设置索引以引用最后一个相同的字符位置 文本行。然后,如果该行不够长,不能包含 指定字符位置的字符,调整字符 位置以引用该行的最后一个字符(换行符)。 计数两侧的空格是可选的。如果显示 给出子修改器,然后计算每个视觉显示行 分别。否则,如果给出任何(或没有修饰符),则每个 逻辑线(无论在视觉上包裹了多少次)都很重要 就一次。如果相关的线没有包裹,那么这两个 计算方法是等价的。
您也可以使用减号向后退。
例如:
next_line = the_widget.index("insert +1 display lines")