使用ScriptingBridge时隐藏Python火箭停靠图标

chb*_*own 5 python macos itunes dock osx-mountain-lion

我正在使用ScriptingBridge检索当前在iTunes,Mac OS X中播放的曲目.

from ScriptingBridge import SBApplication
iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")
print iTunes.currentTrack().name()
Run Code Online (Sandbox Code Playgroud)

但是,当我运行最后一行,实际获取轨道名称时,一个应用程序出现在Dock中,并且在我关闭我的Python程序之前不会离开,无论我是在REPL中运行还是作为脚本运行.图标就是这个,至少在我的机器上:

/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/Resources/PythonInterpreter.icns
Run Code Online (Sandbox Code Playgroud)

该脚本运行良好,我可以通过SB从iTunes获取所需的所有信息.我只想保持图标弹出.为什么该特定方法调用会调用停靠图标?

chb*_*own 4

将其从扩展坞中取出的一种巧妙方法是防止Python.app其出现在扩展坞上:

\n\n

编辑/System/Library/Frameworks/Python.framework/Versions/Current/Resources/Python.app/Contents/Info.plist此键值对并将其添加到主<dict>元素:

\n\n
<key>LSUIElement</key><string>1</string>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我希望有另一种方法可以做到这一点,因为此更改是全局的 \xe2\x80\x94 没有 Python 脚本(使用系统 Python)将在使用此设置的扩展坞上显示。自从发布这个问题以来,我已将 LSUIElement 设置回 0,因为没有其他方法可以获取,例如,matplotlib 生成的窗口,除非它在扩展坞中有一个图标。

\n