4

既存の Gtk ウィジェットをサブクラス化し、Glade3 で動作させたいと考えています。コードはすべて python で、私は PyGObject を使用しています。

私がやりたいことは、Gtk.TextView を拡張し、それをネイティブ ウィジェットのようにグレード UI に追加できるようにすることです。

Glade 2 で可能だったと読みましたが、Glade 3 でこれを行う方法がわかりません。これに関する例やドキュメントが見つからないようです。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

5

やっとやり方がわかった。まず、グレード ファイルがカタログに依存していることを宣言する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <!-- interface-requires the_catalog_name 1.0 -->
  ...Rest of the glade file...

次に、catalog.xml ファイルを作成します。ツリービューを拡張するには、次のようになります。

<glade-catalog name="the_catalog_name" domain="glade-3" 
               depends="gtk+" version="1.0">
  <glade-widget-classes>
    <glade-widget-class title="My Custom Text View" name="CustomTextView" 
                        generic-name="CustomTextView" parent="GtkTextView"
                        icon-name="widget-gtk-textview"/>
  </glade-widget-classes>
</glade-catalog>

以上です。明らかに、Python コードはまだ書かれていませんが、Glade がカスタム ウィジェットを表示するのを妨げることはありません。通常のTextView、Label、または拡張したいものとして扱います。

残念ながら Glade 自体で CustomTextView を作成する方法が見つかりませんでした。しかし、できることは、空き地に通常の TextView を追加し、空き地ファイルを保存して、テキスト エディターで開くことです。作成したツリービューを探して、次のように変更します。

-              <object class="TreeView" id="treeview1">
+              <object class="CustomTreeView" id="treeview1">

空き地で開くと現れます。次に、Python で CustomTreeView クラスを定義し、必要に応じて拡張します。

于 2012-09-03T03:11:09.007 に答える