Here we make a window with three buttons in a 2x2 table. The first two buttons will be placed in the upper row. A third ,quit button, is placed in the lower row, spanning both columns, which means it should look something like this:
Here is the source code for it:
require 'gtk2'
# Our callback
def callback( widget )
puts "Hello Again - #{widget} was pressed"
end
# This callback quits the program
def delete_event( widget )
Gtk.main_quit
return false
end
Gtk.init
# Create a new window
window = Gtk::Window.new( Gtk::Window::TOPLEVEL )
# Set the window title
window.title=( "Table" )
# Set a handler for delete_event immediately
window.signal_connect( "delete_event" ) { |w| delete_event( w ) }
# Sets the border width of the window
window.border_width=( 10 )
# Create a 2x2 table
table = Gtk::Table.new( 2, 2, true )
# Put the table in the main window
window.add( table )
# Create the first button
button = Gtk::Button.new( "button 1" )
# When the button is clicked, we call the "callback" method
# passing the widget as an argument
button.signal_connect( "clicked" ) { |w| callback( w ) }
# Insert button 1 into the upper left quadrant of the table
table.attach( button, 0, 1, 0, 1 )
button.show
# Create the second button
button = Gtk::Button.new( "button 2" )
# When the button is clicked, we call the "callback" method
# passing the widget as an argument
button.signal_connect( "clicked" ) { |w| callback( w ) }
# Insert button 2 into the upper right quadrant of the table
table.attach( button, 1, 2, 0, 1 )
button.show
# Create the quit button
button = Gtk::Button.new( "Quit" )
# When the button is clicked, we call the "delete_event" method
# and the program exits
button.signal_connect( "clicked" ) { |w| delete_event( w ) }
# Insert the quit button into both of the
# lower quadrants of the table
table.attach( button, 0, 2, 1, 2 )
# Show everything
button.show
table.show
window.show
Gtk.main
| Prev | Next |