微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

macOS“打开方式”信号使用 py2app argv_emulation 和 PyQt

如何解决macOS“打开方式”信号使用 py2app argv_emulation 和 PyQt

我有一个基于 PyQt 的应用程序,它可以用 py2app 成功编译。应用程序正确响应 macOS“打开方式”信号,py2app 通过 sys.argv 传递文件名,文件得到正确处理。这是使用 py2app 的 argv_emulation 选项完成的。所有这些都按预期工作。

但是,如果我为一个文件选择“打开方式”(当我的应用程序运行时),我无法让应用程序响应信号。我尝试使用以下方法监视 FileOpen 事件:

def event(self,q_event):

    if q_event.type() == QtCore.QEvent.FileOpen:
        # do stuff
    else:
        pass

    return True

但据我所知,Open With 信号并未触发该事件。我怀疑正在发生的是 py2app 正在拦截“打开方式”信号并将其视为对 sys.argv 的调用——而不是像往常一样“让”PyQt 看到信号——但这超出了我的理解确定这一点的能力。我已经看到禁用 argv_emulation 会导致“打开方式”信号明显被忽略。

我的目标是允许“打开方式”命令运行,无论我的应用程序是否正在运行(以及它现在支持的命令行参数),但在这一点上,我不确定这是可能的。我还想支持文件拖放到停靠栏图标上,但目前这不是优先事项。除了 macOS,我不需要支持任何东西。

py2app 和 PyQt 可以实现吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。