Problem with TkMenu::add_cascade

Hi list,

i’m working on gui using ruby/tk.
Everything went fine (exept the poor documentation), but now i have a
problem with submenus. A small example-code to demonstrate the issue:

menu = TkMenu.new
menu.add_command(‘label’ => ‘Foo’, ‘command’ => lambda { p “foo” })
sub = TkMenu.new
sub.add_command(‘label’ => ‘Bar’, ‘command’ => lambda { p “bar” })
menu.add_cascade(‘label’ => ‘submenu’, ‘menu’ => sub)

canvas = TkCanvas.new
canvas.bind(‘1’) {|e| menu.popup e.x_root, e.y_root}
canvas.pack

Tk.mainloop

The code works nearly as expected, menu appears an has correct content.
If i click on “Foo”, text “foo” is written to the console, but if i
click on
“Bar” nothing happens :frowning:
Any idea what’s going wrong?

Ruby: ruby 1.8.5 (2006-08-25) [i486-linux]
Linux: Linux version 2.6.12 ([email protected]) (gcc version 3.3.6 (Debian
1:3.3.6-13))

thanks a lot,
Matthias

[email protected] wrote:

Hi list,

i’m working on gui using ruby/tk.

Any reason you aren’t using Qt? I don’t want to sound like a broken
record
here, but Qt’s documentation is much better than for Tk, the apps look
better, and so forth.

canvas.bind(‘1’) {|e| menu.popup e.x_root, e.y_root}
canvas.pack

Tk.mainloop

How about a complete example, with headers, so we can test the code?

[email protected] skrev:

menu.add_cascade(‘label’ => ‘submenu’, ‘menu’ => sub)
“Bar” nothing happens :frowning:
Any idea what’s going wrong?

Ruby: ruby 1.8.5 (2006-08-25) [i486-linux]
Linux: Linux version 2.6.12 ([email protected]) (gcc version 3.3.6 (Debian
1:3.3.6-13))

thanks a lot,
Matthias
Tested your code (just added require ‘tk’ as first line) with
Ruby 1.8.5 on WinXP and Active State Tcl 8.4.13.

No problem, works fine, both “foo” and “bar” printed as
they should. Maybe your Tcl needs updating?

On Sep 26, 2006, at 3:12 AM, [email protected] wrote:

menu.add_cascade(‘label’ => ‘submenu’, ‘menu’ => sub)
click on
“Bar” nothing happens :frowning:
Any idea what’s going wrong?

Ruby: ruby 1.8.5 (2006-08-25) [i486-linux]
Linux: Linux version 2.6.12 ([email protected]) (gcc version 3.3.6 (Debian
1:3.3.6-13))

No problem with your code on my box – Mac OS X 10.4, ruby 1.8.2.

Regards, Morton

From: [email protected]
Subject: Problem with TkMenu::add_cascade
Date: Tue, 26 Sep 2006 16:12:32 +0900
Message-ID: [email protected]

The code works nearly as expected, menu appears an has correct content.
If i click on “Foo”, text “foo” is written to the console, but if i
click on
“Bar” nothing happens :frowning:
Any idea what’s going wrong?

Ruby: ruby 1.8.5 (2006-08-25) [i486-linux]
Linux: Linux version 2.6.12 ([email protected]) (gcc version 3.3.6 (Debian
1:3.3.6-13))

That is NOT a bug of Ruby/Tk. Tcl/Tk will give you a same result.
Probably, your trouble depends on the relationship between the
menu and the cascade menu.
Please try to make the cascade menu as a daughter of the menu
(e.g. “sub = TkMenu.new(menu)”).
^^^^

That is NOT a bug of Ruby/Tk. Tcl/Tk will give you a same result.
Probably, your trouble depends on the relationship between the
menu and the cascade menu.
Please try to make the cascade menu as a daughter of the menu
(e.g. “sub = TkMenu.new(menu)”).
^^^^

That’s it, thanks a lot!

One thing i noticed while testing:
it also depends on the windowmanager. On KDE (for example) the “bad”
code works fine, on fluxbox it doesn’t…

best regards,
Matthias

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs