隐藏新 QApplication() 的 Python 启动器图标

Posted

技术标签:

【中文标题】隐藏新 QApplication() 的 Python 启动器图标【英文标题】:Hide Python Launcher icon for new QApplication() 【发布时间】:2011-07-19 08:59:13 【问题描述】:

我有一个在后台运行的线程程序,它为每个线程创建一个 QApplication(),每次我在我的 Dock 上获得一个新的 Python Launcher 图标。

有没有办法在 OSX 上不创建停靠图标来启动 QApplication()?

谢谢!

【问题讨论】:

我认为 Qt 根本不支持多个 QApplication 实例的想法。 【参考方案1】:

有一些方法可以删除/禁用停靠图标。看到这个问题:"How to hide the Dock icon"

我使用这个 Python 代码(在我创建了 QApplication 实例之后):

def hideMacDockIcon():
    import AppKit
    # https://developer.apple.com/library/mac/#documentation/AppKit/Reference/NSRunningApplication_Class/Reference/Reference.html
    NSApplicationActivationPolicyRegular = 0
    NSApplicationActivationPolicyAccessory = 1
    NSApplicationActivationPolicyProhibited = 2
    AppKit.NSApp.setActivationPolicy_(NSApplicationActivationPolicyProhibited)

【讨论】:

如果你没有使用 Mac OS X 捆绑的 Python 发行版,你需要安装 PyObjC,例如使用 sudo port install py32-pyobjc-cocoa 的 MacPorts for Python3.2。 谢谢。我错过了after QApplication 部分,事实证明这很重要。【参考方案2】:

答案在这里:Start a GUI process in Mac OS X without dock icon

在实例化 QApplication 之前添加以下行:

import AppKit
info = AppKit.NSBundle.mainBundle().infoDictionary()
info["LSBackgroundOnly"] = "1"

【讨论】:

以上是关于隐藏新 QApplication() 的 Python 启动器图标的主要内容,如果未能解决你的问题,请参考以下文章

如何在不退出 python 脚本的情况下销毁一个 QApplication 然后运行一个新的?

抓住新的 QApplication 失败并尝试其他方法

无法连接来自 QApplication 的 aboutToQuit 信号

Android 上的 QApplication,从 JNI 开始,一直到 SEGFAULT

python3.3不自带的模块或工具包 下载以后要怎么处理才能在开发环境中调用 (比如放到pyth

QT 和新的信号槽语法,用于 QApplication::quit 外部主函数的槽