# tk\_optionMenu in Ruby/Tk

**URL:** <https://www.ruby-forum.com/t/tk-optionmenu-in-ruby-tk/154757>\
**Category:** Ruby\
**Created:** [December 3, 2008, 5:12pm UTC](https://www.ruby-forum.com/t/tk-optionmenu-in-ruby-tk/154757 "2008-12-03T17:12:38Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kenneth\_McDonald](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/dc4da7/32.png) [@Kenneth\_McDonald](https://www.ruby-forum.com/u/Kenneth_McDonald)\
**Post date:** [December 3, 2008, 5:12pm UTC](https://www.ruby-forum.com/t/tk-optionmenu-in-ruby-tk/154757/1 "2008-12-03T17:12:38Z")

</div>

Does anyone know of an example that shows the correct use of  
tk\_optionMenu in Ruby/Tk? All references I can find deal with popping  
up a “normal” menu.

Thanks,  
Ken

---

<div class="post-metadata">

**Author:** ![Kenneth\_McDonald](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/dc4da7/32.png) [@Kenneth\_McDonald](https://www.ruby-forum.com/u/Kenneth_McDonald)\
**Post date:** [December 3, 2008, 9:55pm UTC](https://www.ruby-forum.com/t/tk-optionmenu-in-ruby-tk/154757/2 "2008-12-03T21:55:15Z")

</div>

From: Kenneth McDonald [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: tk\_optionMenu in Ruby/Tk  
Date: Thu, 4 Dec 2008 01:05:36 +0900  
Message-ID: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Does anyone know of an example that shows the correct use of  
> tk\_optionMenu in Ruby/Tk? All references I can find deal with popping  
> up a “normal” menu.

## Please see line:559–567 of tk/menu.rb. For example,

require ‘tk’

parent = Tk.root  
v = TkVariable.new  
TkLabel.new(parent, :textvariable=\>v).pack  
TkOptionMenubutton.new(parent, v, \*%w(foo bar baz hoge fuga)).pack

# other style of arguments

## TkOptionMenubutton.new(:parent=\>parent, :variable=\>v, :values=\>%w(FOO BAR BAZ HOGE FUGA)).pack Tk.mainloop

However, 2nd style doesn’t work because of a bug of tk/menu.rb.  
Please use the following patch. I’ll commit it to ruby-svn.

# Index: menu.rb

— menu.rb (revision 20349)  
+++ menu.rb (working copy)  
@@ -569,7 +569,7 @@  
keys = \_symbolkey2str(keys)

```
 parent = nil

```

- if args[0].kind\_of?(TkWindow) || args[0] == nil

- if !args.empty? && (args[0].kind\_of?(TkWindow) || args[0] == nil)  
keys.delete(‘parent’) # ignore  
parent = args.shift  
else  
@@ -577,7 +577,7 @@  
end

- if args[0].kind\_of?(TkVariable) || args[0] == nil

- if !args.empty? && (args[0].kind\_of?(TkVariable) || args[0] == nil)  
keys.delete(‘variable’) # ignore  
@variable = args.shift  
else

---

<div class="post-metadata">

**Author:** ![Kenneth\_McDonald](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/dc4da7/32.png) [@Kenneth\_McDonald](https://www.ruby-forum.com/u/Kenneth_McDonald)\
**Post date:** [December 3, 2008, 10:02pm UTC](https://www.ruby-forum.com/t/tk-optionmenu-in-ruby-tk/154757/3 "2008-12-03T22:02:54Z")

</div>

Thanks Hidetoshi!

Ken
