[ruby-gnome2-doc-cvs] [Hiki] create - tut-gtk-helloworld2

Back to archive index

ruby-****@sourc***** ruby-****@sourc*****
2004年 4月 8日 (木) 03:09:48 JST


-------------------------
REMOTE_ADDR = 80.137.231.102
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/de/?tut-gtk-helloworld2
-------------------------
= Ein aufgestocktes Hallo Welt
{{link "tut-gtk-signals-more", nil, "tut-gtk", "tut-gtk2-packing-intro"}}

{{image_right("helloworld2.png")}}

Lassen Sie uns einen Blick auf ein etwas besseres "Hello World"-Programm werfen, das die Beispiele f$B(B Callback-Bl$B(Bke verdeutlicht.
Das wird uns au$B_e(Brdem einen Einstieg in das n$Bdc(Bhste Thema liefern: Das Packen von Widgets.

  #!/usr/bin/env ruby

  # Initialisiert Ruby/GTK2, wie $B|b(Blich.
  require 'gtk2'
  Gtk.init

  # Ein Klick auf einen Button wird diese Methode aufrufen.
  def callback(widget)
    # Zeigt die 'label'-Eigenschaft des Widgets an.
    # Benutzen Sie die API-Referenz f$B|r(B weitere Informationen.
    puts "Hallo nochmal - #{widget.label}(#{widget}) wurde geklickt."
  end

  # Erstellt das Fenster.
  window = Gtk::Window.new

  # Legt den Titel und die Rahmenbreite des Fensters fest.
  window.title = "Hello Buttons"
  window.border_width = 10

  # Das Programm wird bei einem 'delete_event' sofort beendet.
  window.signal_connect('delete_event') do
    Gtk.main_quit
    false
  end

  # Wir erstellen eine Box, in die wir die Widgets packen.
  # Das wird in den folgenden Abschnitten ausf$B|h(Brlicher erkl$Bdr(Bt.
  # Die Box ist nicht wirklich sichtbar, sie wird nur benutzt, um die Widgets
  # auszurichten.
  box1 = Gtk::HBox.new(false, 0)

  # Legt die Box in das Hauptfenster.
  window.add(box1)

  # Erstellt einen neuen Button mit dem Text "Button 1".
  button1 = Gtk::Button.new("Button 1")

  # Wenn der Button angeklickt wird, rufen wir die Callback-Methode
  # mit einer Referenz auf "button 1" als Parameter auf.
  button1.signal_connect( "clicked" ) do |w|
    callback(w)
  end

  # Anstelle von window.add, packen wir diesen Button in die unsichtbare
  # Box, die wir in das Fenster gepackt haben.
  box1.pack_start(button1, true, true, 0)

  # Wiederholen Sie diese Schritte, um einen zweiten Button zu erstellen.
  button2 = Gtk::Button.new("Button 2")

  # Ruft dieselbe Callback-Methode mit anderen Parametern auf
  # und $B|b(Bergibt stattdessen eine Referenz auf "button 2".
  button2.signal_connect("clicked") do |w|
    callback(w)
  end

  # Packt den zweiten Button in die Box.
  box1.pack_start(button2, true, true, 0)

  # Sie k$Bvn(Bnen die show-Methode jedes Widgets folgenderma$B_e(Bn aufrufen:
  #   button1.show
  #   button2.show
  #   box1.show
  #   window.show 
  window.show_all
  Gtk.main

Wie in dem ersten "Hello World" werden Sie bemerken, dass es dieses Mal keine einfache M$Bvg(Blichkeit gibt, das Programm zu beenden. Sie m$B|s(Bsen den Window Manager oder die Kommandozeile benutzen, um das Programm zu beenden.

Eine gute $B\b(Bung f$B|r(B den Leser w$Bdr(Be es, einen dritten "Beenden"-Button, der das Programm beendet.

M$Bvg(Blicherweise denken Sie daran, die Optionen von Gtk::Box#pack_start auszuprobieren, w$Bdh(Brend Sie den n$Bdc(Bhsten Abschnitt lesen. Versuchen Sie, das Fenster zu vergr$Bv_(Bern und beobachten Sie sein Verhalten.






ruby-gnome2-cvs メーリングリストの案内
Back to archive index