tkinter menu bars, assigning children to parents, and grid/pack managers

furliz furliz at libero.it
Thu Jul 31 16:05:01 CEST 2003


Josh wrote:
> Caution, newbie approaching...

well... newbie vs newbie :))
> 
> I'm trying to come up with a very simple Tkinter test application that
> consists of a window with a drop-down menu bar at the top and a grid
> of colored rectangles filling the remainder of the window.

It seems you'd like to obtain a standard window with a standard menubar 
attached at the top.... is it right?

Perhaps I'm not the best person for your problem resolution, but I hope 
I'll could give you a contribute :)

> class MultiColorMenu(Tkinter.Frame):
>     "This class is a bar of drop-down menus for manipulating a grid of
> colored rectangles."
>     def __init__(self, master=None):
>         Tkinter.Frame.__init__(self, master)
>         self.tk_menuBar(self.help_menu())
> 
>     def help_menu(self):
>         help_btn = Tkinter.Menubutton(self, text='Help', underline=0)
>         help_btn.pack(side=Tkinter.LEFT, padx="2m")
>         help_btn.menu = Tkinter.Menu(help_btn)
>         help_btn.menu.add_command(label="How To", underline=0,
> command=self.helpFoo)
>         help_btn.menu.add_command(label="About", underline=0,
> command=self.helpFoo)
>         help_btn['menu'] = help_btn.menu
>         return help_btn
> 
>     def helpFoo(self):
>         print 'Heelllppppp!!!'
>         
For my knowledge (..very small on python, yet) you should use the 
Tkinter.Menu widget rather than creating an extension of the 
Tkinter.Frame like you did in your MultiColorMenu class.

Just copy&paste this simple example, so you see if it is what you're 
looking for.

#begin code
from Tkinter import *

root = Tk()
root.title("Menu demo")
root.geometry("300x300")

# -- barra menu
masterMenu = Menu(root)

# -- menu tipo di ricerca
menutiporicerca = Menu(masterMenu,tearoff=0)
menutiporicerca.add_command(label="Ricerca directory")
menutiporicerca.add_command(label="Ricerca file")
menutiporicerca.add_command(label="Ricerca dentro file")

# -- menu ricerche
menuricerca = Menu(masterMenu,tearoff=0)
menuricerca.add_cascade(label="Nuova ricerca...",menu=menutiporicerca)
menuricerca.add_command(label="Salva ricerca")
menuricerca.add_separator()
menuricerca.add_command(label="Esci")
masterMenu.add_cascade(label="Ricerca",menu=menuricerca)

# -- menu info
menuinfo = Menu(masterMenu,tearoff=0)
menuinfo.add_command(label="Info")
menuinfo.add_separator()
menuinfo.add_command(label="About..")
masterMenu.add_cascade(label="?",menu=menuinfo)

#setta barra menu
root.config(menu=masterMenu)
root.mainloop()

#end code

hope this help you. Bye.





More information about the Python-list mailing list