我想繼承一個現有的Gtk小部件並使其與Glade3一起工作。代碼都是python,我使用的是PyGObject。林間空地的自定義python小部件3
我想要做的就是擴展Gtk.TextView並能夠將它添加到我的glade用戶界面,就好像它是一個本機小部件。
我讀到Glade 2可以使用,但我不知道如何使用Glade 3來做到這一點,我似乎無法找到任何有關此的示例或文檔。任何幫助,將不勝感激。謝謝。
我想繼承一個現有的Gtk小部件並使其與Glade3一起工作。代碼都是python,我使用的是PyGObject。林間空地的自定義python小部件3
我想要做的就是擴展Gtk.TextView並能夠將它添加到我的glade用戶界面,就好像它是一個本機小部件。
我讀到Glade 2可以使用,但我不知道如何使用Glade 3來做到這一點,我似乎無法找到任何有關此的示例或文檔。任何幫助,將不勝感激。謝謝。
終於找到了怎麼做。首先,你必須聲明你的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類並根據需要進行擴展。
到目前爲止您嘗試過做什麼?我不完全確定這是否是你的意思......但是如果你想在Glade中創建一個小部件而不需要放在頂層的Gtk.Window中,你可以通過右鍵單擊一個小部件來做到這一點(比如說Gtk.Box),並選擇「按層次添加」。這將允許您創建*自定義小部件*。希望有幫助 – Wes 2012-07-30 15:30:10
另請參見:[自定義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