Ste*_*zzo 9 python programming pygtk application-development
假设我创建了一个这样的 gtk Widget:
class AwesomeTextView (gtk.TextView):
def set_font(self, font_description):
self.modify_font(pango.FontDescription(font_description))
Run Code Online (Sandbox Code Playgroud)
如何将我的新小部件添加到 Glade Interface Builder 的调色板中?

好的,这将是一步一步的:
AwesomeTextView,它所在的模块将被调用awesome_text_view。这些是我们唯一需要的名字。一个空地小部件由两部分组成,模块和目录。
我们创建一个目录,awesome_text_view.xml并(以 root 身份)将它保存在/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>
Run Code Online (Sandbox Code Playgroud)
您应该复制并调整此模板,因为它有效。:-)
我们创建了一个模块,awesome_text_view.py并且(再次以 root 身份)将它保存在/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))
Run Code Online (Sandbox Code Playgroud)
它现在显示在 Glade 中,您可以将它添加到您的应用程序中。
最后,你只需要
export PYTHONPATH="$PYTHONPATH:/usr/lib/glade3/modules/"
Run Code Online (Sandbox Code Playgroud)就是这样!
这是一个小测试应用程序,展示了如何使用您的小部件:
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2584 次 |
| 最近记录: |