在GtkSourceView窗口中找到光标位置

2 投票
1 回答
767 浏览
提问于 2025-04-17 00:03

我想要显示一个带有自动完成的弹出窗口,怎么才能找到当前光标在屏幕上的位置,以便设置这个自动完成的弹出窗口呢?

1 个回答

2

我在查看gtk的源代码补全功能时找到了这个解决方案:

def get_iter_pos(text_view, iter):
      iter_location = text_view.get_iter_location(iter)
      win_location = text_view.buffer_to_window_coords(
            Gtk.TextWindowType.WIDGET, iter_location.x, iter_location.y)                

        win = text_view.get_window (Gtk.TextWindowType.WIDGET);
        view_pos = win.get_position()

        xx = win_location[0] + view_pos[0]
        yy = win_location[1]+ view_pos[1] + iter_location.height;           
        return (xx, yy, iter_location.height)
buffer = view.get_buffer()
insert_iter = buffer.get_iter_at_mark(buffer.get_insert())
x, y, height = get_iter_pos(widget, insert_iter)
top_x, top_y = widget.get_toplevel().get_position()
mywindow.move(top_x+x, top_y+y) 

撰写回答