2015-01-12 18 views
5

Nếu tôi tạo menu tkinter trên OS X và thử thêm nút menu vào nó với add_comand(), không có gì hiển thị trong menu.Làm thế nào để làm cho Menu.add_command() làm việc trong tkinter trên máy Mac?

Nếu mã bên dưới được chạy trên Ubuntu, tôi lấy thanh thực đơn với hai lệnh có nhãn "Đỏ" và "Xanh dương" làm thay đổi màu nền của cửa sổ.

Trên OS X 10.10.1 (Yosemite) các nút không xuất hiện. Tôi biết tôi có thể tạo một menu thả xuống với các lệnh Red và Blue, nhưng trong ứng dụng thực sự của tôi, tôi không muốn làm điều đó.

from platform import python_version_tuple 

major = python_version_tuple()[0] 

if major == '3': 
    import tkinter as tk 
else: 
    import Tkinter as tk 

root = tk.Tk() 

fr = tk.Frame(root, height = 200, width = 200) 
fr.pack() 
menu = tk.Menu(root) 
root.configure(menu=menu) 
menu.add_command(label='Red', command=lambda:fr.configure(bg='red')) 
menu.add_command(label='Blue', command=lambda:fr.configure(bg='blue')) 

root.mainloop() 

Bạn có thể cho tôi biết cách làm những gì tôi muốn không?

+1

Trong khi một số hệ thống sẽ cho phép bạn thực hiện việc này, điều này dẫn đến khả năng sử dụng rất kém cho ứng dụng của bạn trừ khi bạn cẩn thận làm rõ mục nào là menu và khi nào là nút. Tốt nhất là chỉ có các menu thả xuống trên thanh thực đơn của bạn. –

Trả lời

5

Tôi không nghĩ rằng bạn có thể làm điều đó với bản địa ("Aqua") Tk trên OS X và có thể bạn không nên thử. Menu gốc OS X không hoạt động như thế và Tk cố gắng theo dõi số Human Interface Guide for menus của Apple. Bạn cần có một thanh menu với danh sách thả xuống cascades.

Trang web TkDocs có một giới thiệu tốt để Tk menus and their platform differences. (Bạn thể sử dụng một Tk X11-dựa trên OS X, nhưng điều đó không được khuyến khích như Apple không xuất xưởng các máy chủ X11 nữa với OS X và ứng dụng của bạn sẽ trông và hoạt động kỳ quặc đối với người dùng OS X.)

Các vấn đề liên quan