在TextView中右键单击移动光标?

0 投票
1 回答
655 浏览
提问于 2025-04-16 01:29

现在,当你在一个文本视图(TextView)上右键点击时,会弹出一个菜单,但光标的位置并不会移动到你右键点击的地方,它还是停在原来的位置。对于我这个想要实现拼写检查菜单的人来说,这样就不太方便了,因为我必须先点击一次,然后再右键点击,才能把光标放到正确的位置。所以,我想知道有没有办法改变这种行为,让光标能自动移动到我右键点击的地方?

1 个回答

3

我偶然发现了gtk.TextView.get_iter_at_location这个方法,这让我找到了gtk.TextView.get_pointer和gtk.TextView.window_to_buffer_coords。简单来说,为了让这个功能正常工作,我做了以下操作:

    x, y = self.textView.get_pointer()
    x, y = self.textView.window_to_buffer_coords(gtk.TEXT_WINDOW_WIDGET, x, y)
    if self.textView.get_iter_at_location(x, y).has_tag(self.errTag):
        # Code here

基本上,这个方法获取了指针的位置(相对于窗口),然后把这个位置转换成缓冲区的坐标(我发现gtk.TEXT_WINDOW_TEXT和gtk.TEXT_WINDOW_WIDGET给出的坐标是一样的,但为了保险起见,我选择使用小部件的窗口),最后在那个位置获取一个迭代器。效果非常好。

撰写回答