如何使用pyqt在列表视图中显示带有复选框的多个文件名

How to display multiple filenames with checkboxes inside the listview using pyqt

我正在尝试从文件对话框中获取文件并在列表视图中显示文件名。并且还应该根据添加的文件数量在列表视图中的文件名之前创建复选框。下面是我的代码,returns 只有一个文件带有复选框,与选中的文件数量无关。帮助将不胜感激。

def OpenTheFile(self):
    file = QtGui.QFileDialog.getOpenFileNames(self.dlg, "Select one or more files to open", os.getenv("HOME"),'.sql (*.sql)')
    str_file = ','.join(file)
    fileinfo = QFileInfo(str_file)
    filename = QFileInfo.fileName(fileinfo)


    if fileName:
        for files in str_file:
                model = QStandardItemModel()
                item = QStandardItem('%s' % fileName)
                item.setCheckable(True)
                model.appendRow(item)
        self.dlg.DatacheckerlistView2.setModel(model)
        self.dlg.DatacheckerlistView2.show()

真的不清楚你在做什么(你的问题几乎没有上下文),但下面的代码应该可以工作。您的原始问题中的代码存在几个问题,即:

  1. 您将所有文件连接成一个字符串并遍历该字符串,而不是遍历文件名列表。

  2. 您在循环的每次迭代中都重新创建了模型,有效地删除了之前添加的所有行。

代码:

files = QtGui.QFileDialog.getOpenFileNames(self.dlg, "Select one or more files to open", os.getenv("HOME"),'.sql (*.sql)')

if files:
    model = QStandardItemModel()
    for file in files:
        item = QStandardItem('%s' % file)
        item.setCheckable(True)
        model.appendRow(item)
    self.dlg.DatacheckerlistView2.setModel(model)
    self.dlg.DatacheckerlistView2.show()