Ruby 必须与gtk_builder_new_from_resource一起使用的资源路径是什么?

Ruby 必须与gtk_builder_new_from_resource一起使用的资源路径是什么?,ruby,gtk3,pygobject,ruby-gnome2,Ruby,Gtk3,Pygobject,Ruby Gnome2,我理解函数gtk\u builder\u new\u from_file或gtk\u builder\u new\u from_string的参数是什么,但我很难理解资源路径是什么样的: GtkBuilder * gtk_builder_new_from_resource (const gchar *resource_path); 我找不到任何示例(C、python、vala或其他我不介意的示例) 编辑:解决方案 感谢gnianmt的帮助,下面是ruby()中的一个基本示例: 首先是一个简单的

我理解函数
gtk\u builder\u new\u from_file
gtk\u builder\u new\u from_string
的参数是什么,但我很难理解资源路径是什么样的:

GtkBuilder *
gtk_builder_new_from_resource (const gchar *resource_path);
我找不到任何示例(C、python、vala或其他我不介意的示例)

编辑:解决方案

感谢gnianmt的帮助,下面是ruby()中的一个基本示例:

首先是一个简单的ui文件simple_window.ui:

创建一个简单的_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

标记实际上应该是pygobject,而不是pygtk,因为后者不包括GTK+3,无论如何,如果您想要一个使用python中Glib.Resource的示例,您可以看看,我已经使用该资源来保存CSS数据

通过使用XML表示描述资源中包含的每个单独文件的位置来准备资源:

然后,您可以在需要时加载每个单独的资源:


我希望这有助于理解如何使用资源,您可以使用与我放置CSS文件相同的方式放置生成器资源。

该类的文档提供了详细的说明,可能会有所帮助。您的信息非常有用,我也发现了此链接:。但我仍然在努力使用gtk_builder_resource的新_。例如,如果我使用演示中的文件(我已经重新创建了demo.gresourcefile),我会遇到这样的错误:Gtk error**:未能在第行添加UI:error。。。文档必须以元素(例如)开头。您能否发布一个加载资源的代码的小示例?请记住,在new_from_resource中使用的字符串是指向内部资源的相对路径,前缀+文件名OK,我已经找到了使其工作的方法,它是一个生成器,因此我必须提供完整的ui文件。我编辑了我的主要帖子来展示它是如何工作的。谢谢你的帮助。
<?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
#!/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
<?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>
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)
bytes = Gio.resources_lookup_data("/css_accordion/css_accordion.css", 0)