Forum: Ruby Combo boxes in Ruby-Tk

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Rosalind M. (Guest)
on 2007-03-30 18:25
(Received via mailing list)
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
Rosalind M. (Guest)
on 2007-04-02 12:56
(Received via mailing list)
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
Julian Schnidder (Guest)
on 2007-04-02 14:03
(Received via mailing list)
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.:
Morton G. (Guest)
on 2007-04-03 04:42
(Received via mailing list)
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.

<code>
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
</code>

Regards, Morton
Hidetoshi NAGAI (Guest)
on 2007-04-03 14:17
(Received via mailing list)
From: Morton G. <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>
> 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. ;-)
Rosalind M. (Guest)
on 2007-04-03 14:36
(Received via mailing list)
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
This topic is locked and can not be replied to.