Я извлекаю свои данные из CSV-файла в QtableWidget, я создал несколько методов для изменения, удаления, вставки столбцов и строк, даже новых элементов ... в QtableWidget, поэтому перед переходом к следующему шагу мне нужно преобразовать текущий QtableWidgetItem в словарь (не данные из файла!) нажатием кнопки.
class MyWindow(QMainWindow):
def __init__(self, *args, parent=None):
super(MyWindow, self).__init__(parent)
self.fileName = ""
self.result = {}
##### Event for the button
self.ui.commandLinkButton.clicked.connect(self.generateCsvData)
def loadCsvOnOpen(self, fileName): #Load CSV file
if fileName:
f = open(fileName, 'r')
mystring = f.read()
if mystring.count(",") > mystring.count('\t'):
if mystring.count(",") > mystring.count(';') :
self.delimit = ","
elif mystring.count(";") > mystring.count(',') :
self.delimit = ";"
else:
self.delimit = "\t"
elif mystring.count(";") > mystring.count('\t'):
self.delimit = ';'
else:
self.delimit = "\t"
f.close()
f = open(fileName, 'r')
self.ui.tableView.setRowCount(0)
self.ui.tableView.setColumnCount(0)
for rowdata in csv.reader(f, delimiter=self.delimit):
row = self.ui.tableView.rowCount()
self.ui.tableView.insertRow(row)
if len(rowdata) == 0:
self.ui.tableView.setColumnCount(len(rowdata) + 1)
else:
self.ui.tableView.setColumnCount(len(rowdata))
for column, data in enumerate(rowdata):
item = QTableWidgetItem(data)
self.ui.tableView.setItem(row, column, item)
self.ui.tableView.selectRow(0)
self.isChanged = False
self.setCurrentFile(fileName)
self.ui.tableView.resizeColumnsToContents()
self.ui.tableView.resizeRowsToContents()
self.msg(fileName + " loaded")
def generateCsvData(self):
for row in range(self.ui.tableView.rowCount()):
for column in range(self.ui.tableView.columnCount()):
item = self.ui.tableView.item(row, column)
if item is not None:
self.result[row[0]] = (row[1:])
print(self.result)
else:
return