08 gennaio, 2007

Pygtk: Un widget in una TextView

Se vi è capitato di imbattervi nel problema di dover inserire una immagine o qualsiasi altro widget in una TextView e non sapete come fare, di seguito vi proporrò una soluzione. Il principio è semplice:

  • troviamo il punto in cui vogliamo inserire il widget e creiamo un TextIter
  • creiamo un' ancora al punto in cui si trova l'iter
  • ancoriamo il widget
Nell'esempio che riporterò, per semplicità considererò come iter la fine del buffer associato alla TextView.

import gtk

tv = gtk.TextView()
buf = tv.get_buffer()
iter = buf.get_end_iter()
anchor = buf.create_child_anchor(iter)

img = gtk.Image()
# sostituire con un path ad un file immagine
# esistente
img.set_from_file("path_del_file")
img.show()

tv.add_child_at_anchor(img, anchor)

tv.show()
sw = gtk.ScrolledWindow()
sw.add(tv)
sw.show()
frame = gtk.Frame()
frame.show()
frame.add(sw)
w = gtk.Window()
w.add(frame)
w.set_default_size(400, 300)
w.show_all()
w.connect("destroy", lambda w: gtk.main_quit())
gtk.main()

La cosa interessante è che in questo caso abbiamo usato una immagine, ma avremmo potuto "caricare" nella text view ad esempio un pulsante o un altro widget

Nessun commento:

Posta un commento