隐藏新 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 的 aboutToQuit 信号
Android 上的 QApplication,从 JNI 开始,一直到 SEGFAULT