5

gtk_builder_new_from_file関数の引数が何であるかは理解していますが、gtk_builder_new_from_string次のようなリソースパスが何であるかを確認するのに少し苦労しています。

GtkBuilder *
gtk_builder_new_from_resource (const gchar *resource_path);

例が見つかりません(C、python、vala、またはその他のことは気にしません)。

編集:解決策

gianmt の助けを借りて、ここに Ruby の基本的な例を示します ( https://github.com/ruby-gnome2/ruby-gnome2 ):

最初に単純な ui ファイルsimple_window.ui :

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
  <requires lib="gtk+" version="3.12"/>
  <object class="GtkWindow" id="window">
    <property name="can_focus">False</property>
    <child>
      <object class="GtkLabel" id="label">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">label</property>
        <property name="ellipsize">end</property>
      </object>
    </child>
  </object>
</interface>

次に、simple_window.gresource.xmlファイルを作成します。

<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/simple_window">
    <file>simple_window.ui</file>
  </gresource>
</gresources>

これを次のようにパッケージ化します。

glib-compile-resources simple_window.gresource.xml

simple_window.gresource バイナリ ファイルを作成します。

今Rubyスクリプト:

#!/usr/bin/env ruby

require "gtk3"

path = File.expand_path(File.dirname(__FILE__))
resource = Gio::Resource.load("#{path}/simple_window.gresource")
Gio::Resources.register(resource)
builder = Gtk::Builder.new(:resource => "/simple_window/simple_window.ui")
window = builder.get_object("window")
window.show_all
Gtk.main
4

1 に答える 1

4

後者はGTK + 3をカバーしていないため、タグは実際にはpygobjectであり、pygtkではありません。とにかく、pythonからGlib.Resourceを使用する例が必要な場合は、gtk-demoを参照してください。リソースを使用してCSSデータを保持します。

リソースに含まれる個々のファイルの場所を XML 表現で記述することにより、リソースを準備します: https://gitlab.gnome.org/GNOME/pygobject/-/blob/master/examples/demo/demos/data/demo .gresource.xml

<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/css_accordion">
    <file>css_accordion.css</file>
    <file>reset.css</file>
  </gresource>
  <gresource prefix="/css_basics">
    <file>css_basics.css</file>
    <file>reset.css</file>
  </gresource>
  <gresource prefix="/css_multiplebgs">
    <file>css_multiplebgs.css</file>
    <file>brick.png</file>
    <file>brick2.png</file>
    <file>cssview.css</file>
    <file>reset.css</file>
  </gresource>
</gresources>

次に、リソースは glib-compile-resources https://developer.gnome.org/gio/stable/glib-compile-resources.htmlを使用してコンパイルされます

リソースはアプリケーション全体でロードできます: https://gitlab.gnome.org/GNOME/pygobject/-/blob/master/examples/demo/demo.py#L117

base_path = os.path.abspath(os.path.dirname(__file__))
resource_path = os.path.join(base_path, 'demos/data/demo.gresource')
resource = Gio.Resource.load(resource_path)

その後、必要に応じて個々のリソースをロードできます: https://gitlab.gnome.org/GNOME/pygobject/-/blob/master/examples/demo/demos/Css/css_accordion.py#L48

bytes = Gio.resources_lookup_data("/css_accordion/css_accordion.css", 0)

これがリソースの使用方法を理解するのに役立つことを願っています.CSSファイルを配置したのと同じ方法でビルダーリソースを配置してください.

于 2015-05-18T20:10:05.080 に答える