【问题标题】:Cursor position changed in textview光标位置在文本视图中更改
【发布时间】:2013-09-28 06:10:57
【问题描述】:

在 PyGTK 中,每当光标在我的应用程序的文本视图中移动时,我都想获取光标的当前位置。所以我需要创建一个回调函数并连接到一个信号。 但我不确定从哪里得到这个信号。

【问题讨论】:

  • 请回答 Pygtk

标签: python textview cursor signals pygtk


【解决方案1】:

你想监控缓冲区的 cursor-position 属性,看下面的例子来监控光标位置。

from gi.repository import Gtk

class CursorSample(Gtk.Application):
    def __init__(self):
        Gtk.Application.__init__(self, application_id="org.app.CursorSample")

        self.buffer = Gtk.TextBuffer()
        self.buffer.connect("notify::cursor-position",
                            self.on_cursor_position_changed)

        self.tw = Gtk.TextView()
        self.tw.set_buffer(self.buffer)
        self.tw.props.wrap_mode = Gtk.WrapMode.CHAR

    def do_activate(self):
        main_window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
        main_window.add(self.tw)
        self.add_window(main_window)
        main_window.set_position(Gtk.WindowPosition.CENTER)
        main_window.show_all()

    def on_cursor_position_changed(self, buffer, data=None):
        print buffer.props.cursor_position

if __name__ == "__main__":
    cursorsample = CursorSample()
    cursorsample.run(None)

【讨论】:

  • 那是针对 GTK 3 的,不是 OP 要求的 PyGTK,但是连接到notify::cursor-position 的原理是一样的。
  • PyGTK 不再维护,不应用于编写新代码。
  • 我如何在 Pygtk 中连接到notify::cursor-position
  • @giamt 你能解释一下如何在 pygtk 中连接相同的信号吗?是否相同 notify::cursor-position
  • @SayanPaul 是的,GTK3 和 GTK2 具有相同的连接信号语法,但有细微差别,如果您想查看差异,请参阅 wiki.gnome.org/PyGObject#Porting_PyGTK_to_PyGObject。你真的不应该使用 PyGTK 编写新代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多