看起来您可以在
csv此处使用该模块:
#!/usr/bin/env python#-*- coding:utf-8 -*-import csvimport sipsip.setapi('QString', 2)sip.setapi('QVariant', 2)from PyQt4 import QtGui, QtCoreclass MyWindow(QtGui.QWidget): def __init__(self, fileName, parent=None): super(MyWindow, self).__init__(parent) self.fileName = fileName self.model = QtGui.QStandardItemModel(self) self.tableView = QtGui.QTableView(self) self.tableView.setModel(self.model) self.tableView.horizontalHeader().setStretchLastSection(True) self.pushButtonLoad = QtGui.QPushButton(self) self.pushButtonLoad.setText("Load Csv File!") self.pushButtonLoad.clicked.connect(self.on_pushButtonLoad_clicked) self.pushButtonWrite = QtGui.QPushButton(self) self.pushButtonWrite.setText("Write Csv File!") self.pushButtonWrite.clicked.connect(self.on_pushButtonWrite_clicked) self.layoutVertical = QtGui.QVBoxLayout(self) self.layoutVertical.addWidget(self.tableView) self.layoutVertical.addWidget(self.pushButtonLoad) self.layoutVertical.addWidget(self.pushButtonWrite) def loadCsv(self, fileName): with open(fileName, "rb") as fileInput: for row in csv.reader(fileInput): items = [ QtGui.QStandardItem(field) for field in row ] self.model.appendRow(items) def writeCsv(self, fileName): with open(fileName, "wb") as fileOutput: writer = csv.writer(fileOutput) for rowNumber in range(self.model.rowCount()): fields = [ self.model.data( self.model.index(rowNumber, columnNumber), QtCore.Qt.DisplayRole ) for columnNumber in range(self.model.columnCount()) ] writer.writerow(fields) @QtCore.pyqtSlot() def on_pushButtonWrite_clicked(self): self.writeCsv(self.fileName) @QtCore.pyqtSlot() def on_pushButtonLoad_clicked(self): self.loadCsv(self.fileName)if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) app.setApplicationName('MyWindow') main = MyWindow("/path/to/MyFile.csv") main.show() sys.exit(app.exec_())PyQt5版本:
#!/usr/bin/env python#-*- coding:utf-8 -*-import csvfrom PyQt5 import QtCore, QtGui, QtWidgetsclass MyWindow(QtWidgets.QWidget): def __init__(self, fileName, parent=None): super(MyWindow, self).__init__(parent) self.fileName = fileName self.model = QtGui.QStandardItemModel(self) self.tableView = QtWidgets.QTableView(self) self.tableView.setModel(self.model) self.tableView.horizontalHeader().setStretchLastSection(True) self.pushButtonLoad = QtWidgets.QPushButton(self) self.pushButtonLoad.setText("Load Csv File!") self.pushButtonLoad.clicked.connect(self.on_pushButtonLoad_clicked) self.pushButtonWrite = QtWidgets.QPushButton(self) self.pushButtonWrite.setText("Write Csv File!") self.pushButtonWrite.clicked.connect(self.on_pushButtonWrite_clicked) self.layoutVertical = QtWidgets.QVBoxLayout(self) self.layoutVertical.addWidget(self.tableView) self.layoutVertical.addWidget(self.pushButtonLoad) self.layoutVertical.addWidget(self.pushButtonWrite) def loadCsv(self, fileName): with open(fileName, "r") as fileInput: for row in csv.reader(fileInput): items = [ QtGui.QStandardItem(field) for field in row ] self.model.appendRow(items) def writeCsv(self, fileName): with open(fileName, "w") as fileOutput: writer = csv.writer(fileOutput) for rowNumber in range(self.model.rowCount()): fields = [ self.model.data( self.model.index(rowNumber, columnNumber), QtCore.Qt.DisplayRole ) for columnNumber in range(self.model.columnCount()) ] writer.writerow(fields) @QtCore.pyqtSlot() def on_pushButtonWrite_clicked(self): self.writeCsv(self.fileName) @QtCore.pyqtSlot() def on_pushButtonLoad_clicked(self): self.loadCsv(self.fileName)if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) app.setApplicationName('MyWindow') main = MyWindow("data.csv") main.show() sys.exit(app.exec_())


