从文件管理器打开多个文件

时间:2013-04-20 10:17:41

标签: python linux pyqt4 file-manager

我已经构建了一个(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:我没有设法用它打开任何文件。我的程序未在建议的应用程序中列出,我也没有找到任何方法。

2 个答案:

答案 0 :(得分:1)

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

首先,您是否检查过代码顶部的print sys.argv是否符合预期?

如果是这样,如果您更改线路,它是否有效...

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

...到...

for i in sys.argv[1:]:

出于调试目的,您可能还想包含行...

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

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

答案 1 :(得分:0)

使用QFileDialog:Documentation