【问题标题】:ruby glade3/gtkbuilder exampleruby glade3/gtkbuilder 示例
【发布时间】:2011-10-07 00:01:28
【问题描述】:

我正在尝试将 glade3 与 Ruby 一起使用,但不幸的是,这样的例子很少而且相差甚远。查看可用的内容,我想出了以下代码,但仍然缺少一些东西,因为窗口没有显示。似乎没有任何 GtkBuilder 'show' 方法,所以我不确定让它出现需要什么。有谁知道我需要做什么才能完成这项工作?

"hello.xml" 只是一个相当简单的 glade3 xml 文件,带有一个 GtkWindow 和一个按钮。

#!/usr/bin/env ruby

require 'rubygems'
require 'gtk2'

class HelloGlade
  attr :glade

  def initialize
    if __FILE__ == $0
      Gtk.init
      builder = Gtk::Builder::new
      builder.add_from_file("hello.xml")
      builder.connect_signals{ |handler| method(handler) }  # (I don't have any handlers yet, but I will have eventually)
      Gtk.main()
    end
  end

  def gtk_main_quit
    puts "Gtk.main_quit"
    Gtk.main_quit()
  end
end


hello = HelloGlade.new

你好.xml:

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <requires lib="gtk+" version="2.24"/>
  <!-- interface-naming-policy project-wide -->
  <object class="GtkWindow" id="window1">
    <property name="can_focus">False</property>
    <child>
      <object class="GtkButton" id="button1">
        <property name="label" translatable="yes">button</property>
        <property name="visible">True</property>
        <property name="can_focus">True</property>
        <property name="receives_default">True</property>
        <property name="use_action_appearance">False</property>
      </object>
    </child>
  </object>
</interface>

(编辑)

呃,总是这样。发表一个问题,我自己想出答案。我需要从 GtkBuilder 中获取 window1 对象,并调用它的 show() 方法:

...
window = builder.get_object("window1")
window.show()
Gtk.main

【问题讨论】:

  • 尝试在&lt;object class="GtkWindow" id="window1"&gt;下方添加&lt;property name="visible"&gt;True&lt;/property&gt;

标签: ruby gtk glade gtkbuilder


【解决方案1】:

如果您使用visualruby,该程序会更容易编写。这是 你的代码会是什么样子:

class HelloGlade

  include GladeGUI

  def initialize
    load_glade(__FILE__)
    show_window()
  end

end

您无需设置“可见”属性,也无需编写代码来关闭窗口或连接信号。一切都是自动完成的。这里有很多例子:

http://visualruby.net

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多