Python 当用户在gtk.TextBuffer中键入时获取文本

Python 当用户在gtk.TextBuffer中键入时获取文本,python,gtk,gtk-textbuffer,Python,Gtk,Gtk Textbuffer,我想知道是否有一种方法可以在用户键入时从TextBuffer打印输入。 我试过使用insert_text信号,但它似乎在后面打印出输入的一个字符 到目前为止我有 self.__buffer.connect('insert_text', self.__inserted) def __inserted(self, widget, iter, string, length): print self.__buffer.get_text(self.__buffer.get_start_iter()

我想知道是否有一种方法可以在用户键入时从
TextBuffer
打印输入。 我试过使用
insert_text
信号,但它似乎在后面打印出输入的一个字符

到目前为止我有

self.__buffer.connect('insert_text', self.__inserted)
def __inserted(self, widget, iter, string, length):
    print self.__buffer.get_text(self.__buffer.get_start_iter(),self.__buffer.get_end_iter())
上面的代码打印出实际键入内容后面的缓冲区1字符

我想要的功能如下所示:

如果用户输入“hello”

输出应该是

h              #after h typed
he             #after he typed 
hel            #etc
hell
hello
目前正在印刷

#after h typed
h             #after he typed
he            #etc
hel
hell

您可能会发现,在传递给
\u inserted
方法的参数中找到了丢失的数据。
GtkTextBuffer
对象的
insert_text
信号的默认处理程序似乎是负责将文本插入缓冲区的处理程序,并且您的信号处理程序会提前运行

解决此问题的两种可能方法是:

  • 使用
    connect\u after
    连接信号处理器。这将在默认处理程序之后运行

  • >P>如果您只希望在每次更改之后访问整个缓冲区的数据值,请考虑使用<代码>更改的< /代码>信号。这是在将下一个文本插入缓冲区后发出的,并且还将通知您删除

    谢谢:)不,这不是我真正想做的。只是一个简化版本。