【发布时间】:2015-08-28 15:12:28
【问题描述】:
我正在尝试调试在 Calibre 中打开 CBR 文件的问题(它是 explained here)。特定的 Callibre 问题大多无关紧要,归结为文件和文件夹被不正确的外部程序打开的问题。
经过一些调试,我发现罪魁祸首很可能是对QDesktopServices.openUrl(qurl) 的调用,它选择了错误的应用程序来处理特定文件。
Qt documentation 对于这种方法的工作原理有些简洁(我真的很关心 Python 版本,但我猜它的行为是相同的):
如果 URL 是对本地文件的引用(即 URL 方案是“文件”),那么它将使用合适的应用程序而不是 Web 浏览器打开。
我的 linux 环境似乎配置正确,如果我在 Nautilus 中双击此文件(我并没有准备好完整的 KDE 环境),它会在正确的程序中打开。
所以问题是:
-
openUrl如何找到合适的应用程序来打开文件。 - 如何更改处理该文件的应用程序。
【问题讨论】:
-
您使用的是什么特定的 Linux DE?对于qt5,桌面服务由平台集成插件处理,默认只支持少数DE。如果使用有效的本地文件 url 调用
openUrl只是返回False而不打印任何 Qt 调试消息,这很可能意味着您的系统上没有可用的平台集成插件。如果是这种情况,您可以使用setUrlHandler 显式调用xdg-open之类的东西(无论如何大多数插件都会这样做)。 -
@ekhumoro 我将 debian 与 i3 window maganer 一起使用。
openUrl返回 true,因为它打开了文件,但是文件是在不正确的程序中打开的(以及与 thunar 和 doplhin 使用的程序不同的程序)。
标签: qt pyqt debian qt5 calibre