3 Stimmen

Ruby glade3/gtkbuilder Beispiel

Ich versuche, glade3 mit Ruby zu verwenden, aber leider sind Beispiele dafür rar gesät. Nachdem ich mir angesehen habe, was verfügbar ist, bin ich auf den folgenden Code gekommen, aber es fehlt immer noch etwas, da das Fenster nicht angezeigt wird. Es scheint keine GtkBuilder 'show' Methode zu geben, also bin ich mir nicht sicher, was benötigt wird, um es erscheinen zu lassen. Weiß jemand, was ich tun muss, um das zum Laufen zu bringen?

"hello.xml" ist einfach eine ziemlich einfache glade3-XML-Datei mit einem GtkWindow und einem Button.

#!/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) }  # (Ich habe noch keine Handler, aber ich werde sie letztendlich haben)
      Gtk.main()
    end
  end

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

hello = HelloGlade.new

hello.xml:

    False

        button
        True
        True
        True
        False

(bearbeiten)

Ach, so ist es immer. Eine Frage veröffentlichen und die Antwort selbst herausfinden. Ich musste das Objekt window1 von GtkBuilder abrufen und seine show() Methode aufrufen:

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

0voto

user1182000 Punkte 1575

Dieses Programm wäre viel einfacher zu schreiben, wenn Sie VisualRuby verwendet hätten. So würde Ihr Code aussehen:

class HelloGlade

  include GladeGUI

  def initialize
    load_glade(__FILE__)
    show_window()
  end

end

Sie bräuchten nicht die Eigenschaft "sichtbar" zu setzen, oder Code zum Schließen des Fensters zu schreiben, oder die Signale zu verbinden. Alles wird automatisch erledigt. Es gibt viele Beispiele hier:

http://visualruby.net

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X