0

我创建了一个非常简单的脚本,它解析网页、查找图像并将其下载到机器上。该脚本还每 5 分钟检查一次图片是否已更改,如果已更改,则下载新的。到目前为止,我已经成功地把它变成了一个独立的 py2app,它运行良好。我可以运行它,它会做它的事情。我有几个问题:

这个应用程序可能最好用作后台应用程序。我可以在我的 py2app setup.py 中指定,LSBackgroundOnly=True如下所示:

"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['downloader.py']
DATA_FILES = []
plist = dict(LSBackgroundOnly=True)
OPTIONS = {'argv_emulation': True, 'plist': plist}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

现在。我现在真正想做的是将此应用程序添加到 mac 登录项。有没有办法在py2app中做到这一点?我无法在文档中找到任何内容。但是,我确实在 Apple 开发人员文档中找到了如何使用常规 Obj-C 应用程序执行此操作。 添加登录项

然而,我的 Objective C 知识充其量是有限的,所以我努力想出一个好的解决方案。提前感谢您的帮助。

4

2 回答 2

2

我对 py2app 不熟悉,但如果它制作了一个应用程序包,则过程很简单。

只需在终端中运行它:

sudo defaults write \
    /Library/Preferences/loginwindow \
    AutoLaunchedApplicationDictionary -array-add \
    '{ Path="/Applications/YourApp.app"; }'

替换安装应用程序的名称和路径。

于 2013-01-31T00:44:09.410 回答
0

你如何让你的应用程序在登录时打开?展示了如何从 Objective-C 将应用程序添加到启动时间,并且可以从 Python 使用 PyObjC 使用相同的机制。

除非您的应用程序已经使用 PyObjC,否则可能很容易使用(已弃用)Applescript 方式来做同样的事情。以下脚本将 Safari 添加到当前用户的登录项:

tell application "System Events"
make new login item at end of login items with properties {path:"/Applications/Safari.app"}
end tell

您可以使用 osascript 命令行工具调用此脚本,您可以使用 subprocess.Popen 从您的应用程序启动该工具。请注意,运行此脚本两次也会将应用程序添加到登录项两次,可以使用更复杂的 applescript 来避免这种情况(或者您可以使用配置文件来记住您是否已经将应用程序添加到登录项,这样当用户从他的登录项中删除应用程序时,您将不会阅读该应用程序)。

于 2013-02-19T16:34:03.783 回答