У меня есть gtk.TextView(), и каждый раз, когда пользователь помещает в него текст и нажимает «Ввод», я хочу напечатать текст в терминале и стереть все в текстовой области, поэтому поместите курсор в начало текстового просмотра. Я пытался :
self.textbuffer.set_text("")
or :
start, end = self.textbuffer.get_bounds()
self.textbuffer.delete(start, end)
Но оба эти кода, даже если они стирают текст в текстовой области, не возвращают курсор на первую строку, а вместо этого он находится на второй строке. И если я наберу еще текст и вернусь, он всегда остается на второй строке, я не знаю, почему.
Ну, мне не удалось это сделать, поэтому я пока использовал трюк, вот он:
self.textview = gtk.TextView()
self.textbuffer = self.textview.get_buffer()
self.textview.connect("key_press_event", self.on_key_press_event)
и мой self.on_key_press_event:
def on_key_press_event(self,widget, event):
keyname = gtk.gdk.keyval_name(event.keyval)
if keyname == "Return":
self.textbuffer = self.textview.get_buffer()
startiter, enditer = self.textbuffer.get_bounds()
print self.textbuffer.get_text(startiter, enditer)
self.textview.destroy()
self.textview=gtk.TextView()
self.sw.add(self.textview)
self.textview.show()
self.textview.grab_focus()
self.textview.connect("key_press_event", self.on_key_press_event)
Поэтому каждый раз, когда пользователь нажимает return, я удаляю textview из моего gtk.ScrolledWindow, уничтожаю его, создаю новый и снова добавляю его в свой gtk.ScrolledWindow, он работает, но он действительно грязный...
Любая идея о том, как я могу заставить это работать без этого грязного кода?
Заранее спасибо,
нолийский