5

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

from ScriptingBridge import SBApplication
iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")
print iTunes.currentTrack().name()

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

/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/Resources/PythonInterpreter.icns

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

4

1 回答 1

4

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

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

<key>LSUIElement</key><string>1</string>

我希望有另一种方法来做到这一点,因为这种变化是全局性的——任何 Python 脚本(使用系统 Python)都不会出现在具有此设置的扩展坞上。自从发布此问题以来,我已将我的 LSUIElement 设置回 0,因为没有其他方法可以抓取例如 matplotlib 生成的窗口,除非它在 ​​Dock 中有一个图标。

于 2014-01-17T04:18:11.923 回答