次のようなgtkウィジェットを作成したとします。
class AwesomeTextView (gtk.TextView):
def set_font(self, font_description):
self.modify_font(pango.FontDescription(font_description))
Glade Interface Builderのパレットに新しいウィジェットを追加するにはどうすればよいですか?
次のようなgtkウィジェットを作成したとします。
class AwesomeTextView (gtk.TextView):
def set_font(self, font_description):
self.modify_font(pango.FontDescription(font_description))
Glade Interface Builderのパレットに新しいウィジェットを追加するにはどうすればよいですか?
回答:
さて、これは一歩一歩です。
AwesomeTextView
いるモジュールが呼び出されawesome_text_view
ます。これらは私たちが必要とする唯一の名前です。Gladeウィジェットは、モジュールとカタログの2つの部分で構成されています。
カタログを作成し、awesome_text_view.xml
(ルートとして)に保存します/usr/share/glade3/catalogs/
これは次のようになります。
<glade-catalog name="awesome_text_view"
library="gladepython"
domain="glade-3"
depends="gtk+">
<init-function>glade_python_init</init-function>
<glade-widget-classes>
<glade-widget-class title="Awesome TextView"
name="AwesomeTextView"
generic-name="awesome_text_view"/>
</glade-widget-classes>
<glade-widget-group name="python" title="Python">
<glade-widget-class-ref name="AwesomeTextView"/>
</glade-widget-group>
</glade-catalog>
それはのようにして、このテンプレートをコピーして適応させる必要があります動作します。:-)
モジュールを作成し、awesome_text_view.py
(再びルートとして)に保存します/usr/lib/glade3/modules/
これは次のようになります。
import gobject
import gtk
import pango
class AwesomeTextView (gtk.TextView):
__gtype_name__ = 'AwesomeTextView'
def __init__(self):
gtk.TextView.__init__(self)
def set_font(self, font_description):
self.modify_font(pango.FontDescription(font_description))
これでGladeに表示され、アプリケーションに追加できます。
最後に、あなたはただする必要があります
export PYTHONPATH="$PYTHONPATH:/usr/lib/glade3/modules/"
それでおしまい!
ウィジェットの使用方法を示す小さなテストアプリを次に示します。
import gtk
import awesome_text_view
class App (object):
builder = gtk.Builder()
def __init__(self):
self.builder.add_from_file("test.glade")
self.builder.connect_signals(self)
self.builder.get_object("awesome_text_view1").set_font("mono")
gtk.main()
def on_window1_destroy(self, widget):
gtk.main_quit()
App()
:あなたは、あなたのウィジェットのカタログを作成し、このフォルダを参照してくださいする必要があり/usr/share/glade3/catalogs/
、あなたが参照してくださいよgnome.xml
、例えば顔をしています。
gnomeのドキュメントも参照してください。
gtk+.xml
またはgnome.xml
何らかの理由で欠落していますか?