2

我已经构建了一个(Linux)GUI 应用程序,它可以从终端启动并接受未定义数量的文件作为参数。该应用程序读取 sys.argv 并在 QListWidget 中列出这些文件的名称。

代码类似于:

import sys
from PyQt4.QtGui import QApplication, QMainWindow, QCoreApplication

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        # parse command line arguments
        for i in QCoreApplication.argv()[1:]:
            ...

def main():
    app = QApplication(sys.argv)
    ...

我想要做的是能够从文件管理器中选择多个文件,并通过文件管理器提供的“打开方式...”选项使用我的应用程序打开它们。如何做到这一点?

使用当前代码,当我尝试它时,QListWidget 上只会显示一个选定的文件。

编辑:

最后似乎它取决于文件管理器。我尝试了一些文件管理器,然后...

  • pcmanfm:它只打开一个选定的文件。

  • spacefm:工作正常!

  • dolphin:它将每个文件打开到我程序的不同实例。如果我选择 3 个文件,它将打开我的应用程序 3 次,每个文件一个。

  • nautilus:我没能用它打开任何文件。我的程序未在建议的应用程序中列出,我也没有找到任何方法。

4

2 回答 2

1

确实没有足够的信息来给出明确的答案,但是...

首先,您是否检查print sys.argv了代码顶部的 a 是否与您期望的一样?

如果是这样,如果你改变线路是否有效......

for i in QCoreApplication.argv()[1:]:

...至...

for i in sys.argv[1:]:

出于调试目的,您可能还希望包含以下行...

assert QCoreApplication.argv()[1:] == sys.argv[1:]

...就在您开始 for 循环之前。

于 2013-04-20T11:53:38.320 回答
0

使用 QFileDialog:文档

于 2013-04-20T11:37:36.123 回答