Tkinter: a widget within a menu(item)

Jan Wegner Jan.Wegner at zuken.de
Wed Nov 13 09:18:39 EST 2002


hi,

I want to place a small widget (colorchoser) on a sub menu of
a popup menu. But - depending on the os and python version
used - I get:
	- nothing or
	- the widget itself.

The latter in very rare cases. When using a Tkinter.Button()
I get the same behaviour.

(win_nt4 + python 2.2 fails)
(solaris 2.6 + python 1.5 OK!)

What am I doing wrong,
is there way to achieve the desired behaviour?

here is a code snippet
-----8<----
# Code to show problem with widget on (sub-) menus
import Tkinter

def hello_cb( ):
    print "hello!"

root = Tkinter.Tk( )
frame = Tkinter.Frame( root,
                       width=200,
                       height=200
                       )

frame.pack( )

#popup menu w/o menubar
menu0 = Tkinter.Menu( frame, tearoff=0)
menu1 = Tkinter.Menu( menu0, tearoff=0)
menu2 = Tkinter.Menu( menu0, tearoff=0)

menu2.add_command( label="sub one",
                   command = hello_cb)

menu2.add_command( label="sub two",
                   command = hello_cb)

#
# the tricky part of the deal
frm = Tkinter.Frame( menu1 )
frm.pack( )
btn = Tkinter.Button( frm,
                      text = ' 16 tons',
                      command = hello_cb)
btn.pack( )


#OK! make a 'simple' one
menu0.add_command( label="First 1",
                   command=hello_cb)

#doesn't work
menu0.add_cascade( label="Second is Sub ...",
                   menu = menu1)
#OK!
menu0.add_cascade( label="Third is Sub ...",
                   menu = menu2)

# pop it up
def showMenu(event):
    menu0.post(event.x_root, event.y_root)

frame.bind("<Button-3>", showMenu)


Tkinter.mainloop()

----->8----

Kind Reards,

Jan (Wegner)




More information about the Python-list mailing list