tkinter menus

Martin Rand hsl at tcp.co.uk
Tue Jul 11 00:41:32 EDT 2000


On Mon, 10 Jul 2000 17:59:28 GMT, Keith Murphy <kpmurphy at my-deja.com>
wrote:

>In article <5vujmsg8hdf54luae6e2c0jivv93qheu9h at 4ax.com>,
>  mwr at hsl.tcp.co.uk wrote:
>> On Mon, 10 Jul 2000 14:26:40 GMT, Keith Murphy <kpmurphy at my-deja.com>
>> wrote:
>>
>> >menu, menu... anyone, anyone?
>> >
>> >	How do you configure top-level menu entries?  I'd like to put a
>'help'
>> >menu (and possibly others) on the right end of the menu bar.  I've
>seen
>> >examples where you make your own frame... but there has to be a way
>> >built in... doesn't there?  :)
>> >
>> In Tkinter, when you use the appropriate geometry manager to put the
>> button in the menu bar. E.g:
>> helpButton = Menubutton(myMenuBar, ...)
>> helpButton.Pack(side=RIGHT, ...)
>>
>> Or if you're using Pmw, then you can do something like:
>> myMenuBar = Pmw.MenuBar(...)
>> myMenuBar.addmenu(side=RIGHT,...)
>>
>> --
>> Martin Rand
>> Highfield Software Ltd
>> mwr at highfield-software.co.uk
>> Phone: +44 (0)23 8025 2445
>> Fax:   +44 (0)23 8025 2445
>>
>
>
>well i am using a system menubar, not one i've created.  i'm using
>fredrik lundh's 'an introduction to tkinter'
>(http://www.pythonware.com/library/tkinter/introduction/index.htm) as my
>guide.  here is an example he uses:
>
># File: menu-example-2.py
>
>from Tkinter import *
>
>root = Tk()
>
>def hello():
>   print "hello!"
>
># create a toplevel menu
>menubar = Menu(root)
>menubar.add_command(label="Hello!", command=hello)
>menubar.add_command(label="Quit!", command=root.quit)
>
># display the menu
>root.config(menu=menubar)
>
>mainloop()
>
>
>
>...if you try and pack or anything, you will get the following message:
>TclError: can't pack ".1977984.1980464": it's a top-level window
>
>... any more help?  thanks :)
>
Well, you could go at it this way: 

##########################

from Tkinter import *

def doExit():
    pass  # Your code goes here...

root = Tk()
root.geometry("640x480") # Just to show packing works as expected
menubar = Frame(root)
menubar.pack(fill=X)

# If you want to add a drop-down...
hellobutton = Menubutton(menubar, text='Hello!')
hellobutton.pack(side=LEFT)
hellobutton.menu = Menu(hellobutton)  
# etc...
goodbyebutton = Menubutton(menubar, text='Goodbye!')
goodbyebutton.pack(side=LEFT)
goodbyebutton.menu = Menu(goodbyebutton)  
# etc....

# If you want to add an immediate action...
quitbutton = Button(menubar, text='Quit', relief=FLAT, command =
doExit)
quitbutton.pack(side=RIGHT)

root.mainloop()

#############################

But I must admit that it's to avoid this sort of grunt work that I go
for Pmw wherever I can...


--
Martin Rand
Highfield Software Ltd
mwr at highfield-software.co.uk
Phone: +44 (0)23 8025 2445
Fax:   +44 (0)23 8025 2445



More information about the Python-list mailing list