Mac 上的 Dock 图标菜单 (Python)

问题描述 投票:0回答:1

如何创建上下文/快捷菜单(任务栏图标的右键单击菜单)并添加命令列表,例如创建新窗口、列出打开的旧文件等?重要提示:我想要任务栏/扩展坞中的图标菜单,而不是右键单击窗口。此外,如果 PyInstaller 应用程序必须使用某些文件来保留列表中的某些项目(例如过去打开的文件(请参阅 Mac 的停靠菜单上的 VS Code)),这对我来说也非常重要。必须可以用 Python 完成。

所需菜单图片:

python macos tkinter pyinstaller
1个回答
0
投票

在 macOS 上,应用程序的 Dock 图标通常不支持显示上下文菜单,就像您在应用程序窗口中看到的那样。您需要使用 Swift 或 Objective-C 来创建自己的或编辑此类选项。

您可以编辑 Dock 图标以显示不同的图像,而不是 python 启动器的标准火箭。本教程 https://clay-atlas.com/us/blog/2021/09/06/pyqt5-en-mac-os-display-icon-dock/ 或者这可能适用于该问题 设置 tkinter 图标Mac 操作系统.

您可以做的是编辑始终显示在左上角的菜单栏。这个问题 编辑应用程序“关于”菜单 MacOSX(使用 tkinter) 可能会有所帮助,但我也提供了自己的代码。以下代码中使用的方法的文档可以在以下位置找到:https://oooutlk.github.io/tk/platform_menus.html。 希望有帮助!

from tkinter import *
import tkinter as tk

class Tutorial:
    def __init__(self, root):
      self.root = root
      self.create_menu()
      self.create_contextual_menu()
      self.labell = tk.Label(root, text="Try copying this text", justify="center")
      self.labell.pack()

    def create_menu(self):
        self.menu_bar = Menu(self.root)

        # File menu
        self.file_menu = Menu(self.menu_bar, tearoff=0)
        self.file_menu.add_command(label="New", command=self.dummy_command)
        self.file_menu.add_command(label="Open", command=self.dummy_command)
        self.file_menu.add_separator()
        self.file_menu.add_command(label="Save", command=self.dummy_command)
        self.file_menu.add_command(label="Save As", command=self.dummy_command)
        self.file_menu.add_separator()
        self.file_menu.add_command(label="Exit", command=self.root.quit)
        self.menu_bar.add_cascade(label="File", menu=self.file_menu)

        # Edit menu
        self.edit_menu = Menu(self.menu_bar, tearoff=0)
        self.edit_menu.add_command(label="Cut", command=self.dummy_command)
        self.edit_menu.add_command(label="Copy", command=self.dummy_command)
        self.edit_menu.add_command(label="Paste", command=self.dummy_command)
        self.menu_bar.add_cascade(label="Edit", menu=self.edit_menu)

        # Help menu
        self.help_menu = Menu(self.menu_bar, tearoff=0)
        self.help_menu.add_command(label="About", command=self.dummy_command)
        self.menu_bar.add_cascade(label="Help", menu=self.help_menu)

        # Set the menu
        self.root.config(menu=self.menu_bar)

    def create_contextual_menu(self):
        self.context_menu = Menu(self.root, tearoff=0)
        self.context_menu.add_command(label="Cut", command=self.dummy_command)
        self.context_menu.add_command(label="Copy", command=self.dummy_command)
        self.context_menu.add_command(label="Paste", command=self.dummy_command)

        # Bind the context menu to the root window
        self.root.bind("<Button-2>", self.show_context_menu)
         # might be Button-3 see:
         # https://stackoverflow.com/questions/59696557/tkinter-button-different-commands-on-right-and-left-mouse-click
         
    def show_context_menu(self, event):
        # Display the context menu at the event location
        self.context_menu.post(event.x_root, event.y_root)

    def dummy_command(self):
        print("This is a dummy command.")

if __name__ == "__main__":
    root = tk.Tk()
    app = Tutorial(root)
    root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.