Subscribed unsubscribe Subscribe Subscribe

Glade + Python/Ruby

プログラミング

以前書いたPyGTKでGladeを使うコードは以下のようにするともっと便利になる.

xml = gtk.glade.XML('GladeFileName.glade')
xml.signal_autoconnect(dict(inspect.getmembers(self, inspect.ismethod)))
[setattr(self, gtk.glade.get_widget_name(x), x)
    for x in xml.get_widget_prefix('')]

list comprehensionの中で破壊的なメソッドを使って戻り値を捨てるのはちょっと気持ち悪いけど,これでGladeなしのときと同じようにwidgetインスタンス変数でアクセスできる.

Rubyだともっと自然な感じ.

GladeXML.new("GladeFileName.glade") {|handler|
   method(handler)
}.get_widget_prefix('').each {|widget|
   instance_variable_set('@' + widget.name, widget)
}