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