[pygtk] Custom classes, Glade, and gtk.Builder
Robin Munn
rmunn at pobox.com
Thu Jun 3 22:43:40 WST 2010
I'm trying to learn to use Glade to create UIs with gtk.Builder, and
there's one thing I can't figure out how to do. What I want to do is
something like this:
class MainWindow(gtk.Window):
def on_window_destroy(self):
gtk.main_quit()
def handle_some_other_event(self):
do_something()
builder = gtk.Builder()
builder.add_from_file('main_window.ui')
wnd = builder.get_object('mainwindow')
builder.connect_signals(wnd)
wnd.show()
However, I can't find anywhere in Glade to specify that I want to use
my MainWindow class rather than the gtk.Window class, so the "wnd"
object ends up as a gtk.Window instance and doesn't have the event
handler functions (on_window_destroy(), handle_some_other_event(), and
so on). If I edit the UI XML file by hand and change
'class="gtk.Window"' to 'class="MainWindow"', gtk.Builder doesn't know
where to find the MainWindow class to instantiate it.
I can work around this by putting the event names and handler
functions in a dict and passing that dict to gtk.Builder, but that
feels like unnecessary duplication. Glade lets me type in signal
handler names, and I have functions of those names in the class... so
how do I make this work? How do I tell gtk.Builder that I want to
instantiate my MainWindow class rather than the gtk.Window class?
--
Robin Munn
Robin.Munn at gmail.com
GPG key 0x4543D577
More information about the pygtk
mailing list