#!/usr/bin/ruby
# Import the library.
require 'tk'
# Root window.
root = TkRoot.new {
title 'Push Me'
background '#111188'
}
# Add a label to the root window.
lab = TkLabel.new(root) {
text "Hey there,\nPush a button!"
background '#3333AA'
foreground '#CCCCFF'
}
# Make it appear.
lab.pack('side' => 'left', 'fill' => 'both')
# A frame can be used to arrange buttons with the packer.
fr = TkFrame.new
fr.pack('side' => 'right', 'fill' => 'both')
# Here's a button. Added to the frame, not the root.
swapbut = TkButton.new(fr) {
text "Swap"
background '#EECCCC'
activebackground '#FFEEEE'
foreground '#990000'
pack('side' => 'top', 'fill' => 'both')
}
# Another button
stopbut = TkButton.new(fr) {
text "Exit"
background '#CCEECC'
activebackground '#EEFFEE'
foreground '#009900'
command { exit }
pack('side' => 'bottom', 'fill' => 'both')
}
# Switch button colors.
def cswap(b1, b2)
# Swap each color between the two buttons.
for loc in ['background', 'foreground', 'activebackground']
c = b1.cget(loc)
b1.configure(loc => b2.cget(loc))
b2.configure(loc => c)
end
end
swapbut.configure( 'command' => proc { cswap(swapbut, stopbut) } )
Tk.mainloop