Hi all,

I'm a beginner in Tkinter development and I have a problem w/ the menus
under Mac OS.
I would like to build a GUI w/ menus but when I run the program on MAC OS
Lion everything is ok but no menus are displayed in my window. I tried to
run the same program w/ the same Python version on a Ubuntu 12.04 and this
time the menus are correctly displayed.
I also noticed that IDLE doesn't display the menus either.
I'm not stuck as I can continue to code on my Linux but at the end this
program will have to run mainly on Mac OS and at this time I can't provide
it as it is.
I had a look at the known issue on the Python website but nothing seems
related to this problem. It is also possible I do something wrong but I
can't find what. Please can you help me to troubleshoot this issue ?


My configuration is the following:

Mac Book Pro 2.4GHz Core i5 / 4GB RAM
Mac OS X 10.7.5
Python 2.7.3 (the one provided w/ Mac OS)
I believe TK is ver. 8.5 but I don't know how to verify it.

I attached to this email the test case I used to confirm the issue.

Best regards,
Francois.

#!/usr/bin/python

import Tkinter as tk
import sys

class ExampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self._create_menubar()
        self.text = tk.Text()
        self.text.pack(side='bottom', fill='none', expand=False)

    def _create_menubar(self):
        # create a menu for the menubar and associate it
        # with the window
        self.menubar = tk.Menu()
        self.configure(menu=self.menubar)
       # self.menubar.pack()

        # create a File menu and add it to the menubar
        file_menu = tk.Menu(self.menubar, tearoff=False)
        self.menubar.add_cascade(label="File", menu=file_menu)
        file_menu.add_command(label="Quit", command=self.on_quit)

        # create a Edit menu and add it to the menubar
        edit_menu = tk.Menu(self.menubar, tearoff=False)
        self.menubar.add_cascade(label="Edit", menu=edit_menu)
        edit_menu.add_command(label="Cut", underline=2, command=self.on_cut)
        edit_menu.add_command(label="Copy", underline=0, command=self.on_copy)
        edit_menu.add_command(label="Paste", underline=0, command=self.on_paste)

        # create a View menu and add it to the menubar
        view_menu = tk.Menu(self.menubar, tearoff=False)
        self.menubar.add_cascade(label="View", menu=view_menu)
        view_menu.add_cascade(label="Whatever", command=self.on_whatever)

    def log(self, s):
        self.text.insert("end", s + "\n")
        self.text.see("end")

    # not good programming style, but I'm trying to keep 
    # the example short
    def on_cut(self): self.log("cut...")
    def on_copy(self): self.log("copy...")
    def on_paste(self): self.log("paste...")
    def on_quit(self): sys.exit(0)
    def on_whatever(self): self.log("whatever...")

if __name__ == "__main__":
    app = ExampleApp()
    app.mainloop()
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to