私は gtk.TextView() を持っており、ユーザーがテキストを入力してリターンを押すたびに、ターミナルにテキストを出力し、テキスト領域のすべてを消去したいので、テキストビューの先頭にカーソルを置きます。私がしようとしました :
self.textbuffer.set_text("")
また :
start, end = self.textbuffer.get_bounds()
self.textbuffer.delete(start, end)
ただし、これらのコードは両方とも、テキスト領域のテキストを消去しても、カーソルを最初の行に戻すのではなく、2 行目に戻します。さらにテキストを入力して戻ると、常に 2 行目にとどまります。その理由はわかりません。
まあ、私はそれを行うことができなかったので、当分の間トリックを使用しました。
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)
したがって、ユーザーがリターンを押すたびに、テキストビューを gtk.ScrolledWindow から削除し、破棄し、新しいものを作成して gtk.ScrolledWindow に再度追加します。機能しますが、本当に汚れています...
その汚いコードなしでこれを機能させる方法について何か考えはありますか?
前もって感謝します、
ノリアン