# Combo boxes in Ruby-Tk

**URL:** <https://www.ruby-forum.com/t/combo-boxes-in-ruby-tk/90636>\
**Category:** Ruby\
**Created:** [March 30, 2007, 4:25pm UTC](https://www.ruby-forum.com/t/combo-boxes-in-ruby-tk/90636 "2007-03-30T16:25:43Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rosalind\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ea5d25/32.png) [@Rosalind\_M](https://www.ruby-forum.com/u/Rosalind_M)\
**Post date:** [March 30, 2007, 4:25pm UTC](https://www.ruby-forum.com/t/combo-boxes-in-ruby-tk/90636/1 "2007-03-30T16:25:43Z")

</div>

I’m a newcomer to Ruby, though a seasoned campaigner in Perl, and I’m  
finding my feet, so please be nice!

I’ve been playing around with the Tk extension. The section on Ruby Tk  
in  
the pickaxe book is sketchy to say the least. I do have a well-thumbed  
copy of Learning Perl/Tk, so I know my way around the basics.

My question is: is there any way in Ruby Tk to implement combo boxes?  
Neither BrowseEdit nor JComboBox seem to work.

Rosie

---

<div class="post-metadata">

**Author:** ![Rosalind\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ea5d25/32.png) [@Rosalind\_M](https://www.ruby-forum.com/u/Rosalind_M)\
**Post date:** [April 2, 2007, 10:56am UTC](https://www.ruby-forum.com/t/combo-boxes-in-ruby-tk/90636/2 "2007-04-02T10:56:42Z")

</div>

Rosalind M. wrote:

> Rosie  
> I’m a little surprised that nobody managed to come up with an answer to  
> this.

Is Tk really a hopeless case with Ruby? If it is, what alternative GUI  
manager would you suggest?

Rosie

---

<div class="post-metadata">

**Author:** ![Rosalind\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ea5d25/32.png) [@Rosalind\_M](https://www.ruby-forum.com/u/Rosalind_M)\
**Post date:** [April 2, 2007, 12:03pm UTC](https://www.ruby-forum.com/t/combo-boxes-in-ruby-tk/90636/3 "2007-04-02T12:03:48Z")

</div>

Hi!

In Brent B. Welsh’s book “Practical Programming in Tcl and Tk” 4th  
ed. the index redirects “combobox” to “spinbox” (new in Tcl/Tk  
version 8.4 IIRC):

require ‘tk’

TkSpinbox.new do  
from -2  
to 2  
pack  
end

TkSpinbox.new do  
from -2  
to 2  
increment 0.1  
pack  
end

TkSpinbox.new do  
@states=[“Arizona”, “California”, “New Mexico”]  
values @states  
wrap 1  
pack  
end

TkButton.new do  
text “Quit”  
command “exit”  
pack  
end

Tk.mainloop

Hope, that helps.

Julian

Am 02.04.2007 um 10:55 schrieb Rosalind M.:

---

<div class="post-metadata">

**Author:** ![Rosalind\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ea5d25/32.png) [@Rosalind\_M](https://www.ruby-forum.com/u/Rosalind_M)\
**Post date:** [April 3, 2007, 2:42am UTC](https://www.ruby-forum.com/t/combo-boxes-in-ruby-tk/90636/4 "2007-04-03T02:42:05Z")

</div>

On Apr 2, 2007, at 6:03 AM, Julian Schnidder wrote:

> end  
> values @states  
> Tk.mainloop
> 
> Hope, that helps.
> 
> Julian

That’s an interesting example, but are spin boxes really the same as  
combo boxes? The OP may also want to look at Tk::Iwidgets::Combobox.  
Here is a minimal example.

`
require 'tk'
require 'tkextlib/iwidgets'
DEBUG = []
COLORS = %w[red green blue cyan yellow magenta black white]
begin
root = TkRoot.new {title ‘Ruby/Tk Combo Box’}
cbx = Tk::Iwidgets::Combobox.new(root) {
labeltext “Colors:”
pack :pady => 10
}
cbx.insert_entry(0, COLORS.first)
COLORS.each { |color| cbx.insert_list(‘end’, color) }
btn = TkButton.new do
text “Quit”
command { Tk.root.destroy }
pack
end
```
win_w, win_h = 300, 80
win_l = (TkWinfo.screenwidth('.') - win_w) / 2
root.geometry("#{win_w}x#{win_h}+#{win_l}+50")
root.resizable(false, false)

# Make Cmnd+Q work as expected on Mac OS X.
root.bind('Command-q') { Tk.root.destroy }

Tk.mainloop

```
ensure
puts DEBUG unless DEBUG.empty?
end
`

Regards, Morton

---

<div class="post-metadata">

**Author:** ![Rosalind\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ea5d25/32.png) [@Rosalind\_M](https://www.ruby-forum.com/u/Rosalind_M)\
**Post date:** [April 3, 2007, 12:17pm UTC](https://www.ruby-forum.com/t/combo-boxes-in-ruby-tk/90636/5 "2007-04-03T12:17:08Z")

</div>

From: Morton G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: Re: Combo boxes in Ruby-Tk  
Date: Tue, 3 Apr 2007 09:41:03 +0900  
Message-ID: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> That’s an interesting example, but are spin boxes really the same as  
> combo boxes? The OP may also want to look at Tk::Iwidgets::Combobox.  
> Here is a minimal example.

Please see ‘ext/sample/tkcombobox.rb’ on Ruby source tree also. 😉

---

<div class="post-metadata">

**Author:** ![Rosalind\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ea5d25/32.png) [@Rosalind\_M](https://www.ruby-forum.com/u/Rosalind_M)\
**Post date:** [April 3, 2007, 12:36pm UTC](https://www.ruby-forum.com/t/combo-boxes-in-ruby-tk/90636/6 "2007-04-03T12:36:10Z")

</div>

Morton G. wrote:

> That’s an interesting example, but are spin boxes really the same as  
> combo boxes? The OP may also want to look at Tk::Iwidgets::Combobox.

Thank you - that seems to do the trick.

Rosie
