我正在尝试调试在 Calibre 中打开 CBR 文件的问题(在此处进行了解释)。特定的 Callibre 问题大多无关紧要,归结为文件和文件夹被不正确的外部程序打开的问题。
经过一些调试后,我发现罪魁祸首很可能是QDesktopServices.openUrl(qurl)
选择了错误的应用程序来处理特定文件的调用。
Qt 文档对于这种方法的工作原理有些简洁(我真的很关心 Python 版本,但我猜行为是相同的):
如果 URL 是对本地文件的引用(即 URL 方案是“文件”),那么它将使用合适的应用程序而不是 Web 浏览器打开。
我的 linux 环境似乎配置正确,如果我在 Nautilus 中双击此文件(我并没有准备好完整的 KDE 环境),它会在正确的程序中打开。
所以问题是:
- 如何
openUrl
找到合适的应用程序来打开文件。 - 如何更改将处理该文件的应用程序。