SimpleTk
I wanted a really simple GUI library for Ruby. Not because I think Ruby should be used for GUI
applications, but because I think it should be able to tbe used for GUI applications.
Really I wanted something to make a quick configuration app using an existing Ruby gem I had
written. I started out with a simple console app, but I decided I wanted something even simpler
for the eventual day when somebody else has to use it.
So I searched. First I found Shoes. Which would be acceptable except Shoes 3 does not have a gem
and Shoes 4 requires JRuby. Ok moving on, we have several other libraries that interface with other
libraries. And then Tk, which is from the Ruby code base. So time to learn Tk, which turns out has
a lot of repeated steps and code. Well that's easy enough to correct. I wrote a quick wrapper and
built my config app.
I extracted that wrapper and built it up to support more than just labels, entries, and buttons.
This gem is the end result of that action.
Installation
Add this line to your application's Gemfile:
gem 'simple_tk'
And then execute:
$ bundle
Or install it yourself as:
$ gem install simple_tk
Usage
You can build windows using either a block passed to a window constructor or by calling the methods
on the created window. Call SimpleTk.run
to run your application. You can use SimpleTk.alert
and
SimpleTk.ask
for basic message boxes. In all cases, the Tk library is available if you need more
advanced options.
require 'simple_tk'
win = SimpleTk::Window.new(title: "My Program", window_geometry: "400x300") do
add_label :label1, "Hello World!", :column => 0, :row => 0
add_frame(:frame1, :column => 0, :row => 1) do
add_button(:btn1, "Button 1", :position => [ 0, 0 ]) do
SimpleTk.alert "You clicked Button 1!"
end
add_button :btn2,
"Button 2",
:position => { x: 1, y: 0 },
:command => ->{ SimpleTk.alert "You clicked Button 2!" }
end
end
win.add_label :label2, "Goodby World!", :column => 0, :row => 2
win.config_column 0, weight: 1
(0..win.row_count).each do |row|
win.config_row row, weight: 1
end
win.object[:frame1].object[:btn2].bind("3") do
SimpleTk.alert "You right-clicked on Button 2!"
end
SimpleTk.run
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/barkerest/simple_tk.
License
The gem is available as open source under the terms of the MIT License.