2012-07-19 71 views
4

我想繼承一個現有的Gtk小部件並使其與Glade3一起工作。代碼都是python,我使用的是PyGObject。林間空地的自定義python小部件3

我想要做的就是擴展Gtk.TextView並能夠將它添加到我的glade用戶界面,就好像它是一個本機小部件。

我讀到Glade 2可以使用,但我不知道如何使用Glade 3來做到這一點,我似乎無法找到任何有關此的示例或文檔。任何幫助,將不勝感激。謝謝。

+0

到目前爲止您嘗試過做什麼?我不完全確定這是否是你的意思......但是如果你想在Glade中創建一個小部件而不需要放在頂層的Gtk.Window中,你可以通過右鍵單擊一個小部件來做到這一點(比如說Gtk.Box),並選擇「按層次添加」。這將允許您創建*自定義小部件*。希望有幫助 – Wes 2012-07-30 15:30:10

+0

另請參見:[自定義PyGTK Widgets在Glade3](http://www.pygtk.org/articles/custom-widgets-glade/Custom_PyGTK_Widgets_in_Glade3-part-2.html),[python - 如何添加pygtk Widget到Glade調色板? - 詢問Ubuntu](http://askubuntu.com/questions/30496/how-to-add-a-pygtk-widget-to-the-glade-palette) – sdaau 2013-11-10 17:44:23

回答

4

終於找到了怎麼做。首先,你必須聲明你的glade文件依賴於目錄

<?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,保存glade文件並在文本編輯器中打開它。只要看看你創建的樹視圖,並像這樣改變:

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

打開它在林間空地,它出現了。然後只需在python中定義一個CustomTreeView類並根據需要進行擴展。