В общем, есть поле ввода, изменения текста в котором нужно отслеживать посимвольно. Точнее той его части, что перед курсором. Для этих целей примерно такой код
from gi.repository import Gtk
class Main():
def __init__(self):
self.win = Gtk.Window()
self.entry = Gtk.Entry()
self.curpos = 0
self.entry.connect("insert-text", self.on_insert_text)
self.entry.connect("delete-text", self.on_delete_text)
self.entry.connect("changed", self.on_changed)
self.win.add(self.entry)
self.win.connect("delete-event", Gtk.main_quit)
self.win.show_all()
def on_insert_text(self, entry, text, length, *args):
self.curpos = entry.get_position() + length
def on_delete_text(self, entry, start, end, *args):
self.curpos = start
def on_changed(self, *args):
print(self.entry.get_text()[:self.curpos])
if __name__ == "__main__":
Main()
Gtk.main()
Оно работает, но при вводе первого символа стабильно выдает варнинг
Warning: g_value_get_int: assertion 'G_VALUE_HOLDS_INT (value)' failed
Gtk 3.10, python3.4.