Aug-03-2019, 09:46 PM
(This post was last modified: Aug-03-2019, 09:46 PM by amandacstr.)
Hi!
I'm making this software in python using pyqt to read a big text file(+60000 lines) with paths to other files. The content of this file is something like this:
I'm making this software in python using pyqt to read a big text file(+60000 lines) with paths to other files. The content of this file is something like this:
493.0 <#> /media/backup/programming/python/fiction - edgar allan poe - the black cat.txtI'm reading these lines and storing the data in tuples(score(float), filename) because I need.
(493.0, /media/backup/programming/python/fiction - edgar allan poe - the black cat.txt)When this software starts it shows in a QTableWidget all lines correctly, but when I press buttonSort the convertion of float to str gets heavier and heavier. I would like to know why this is happening only in the second time "showTales()" is called and to fix it.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem import file class Ui_Form(object): def __init__(self): self.file = file.File() self.tales = self.file.loadTalesTuples() #It will contains +60 000 tuples def setupUi(self, Form): #... self.tableTales = QtWidgets.QTableWidget(Form) self.tableTales.setObjectName("tableTales") self.tableTales.setColumnCount(3) self.tableTales.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.tableTales.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableTales.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableTales.setHorizontalHeaderItem(2, item) self.gridLayout.addWidget(self.tableTales, 4, 0, 1, 4) self.tableTales.setColumnWidth(1, 200) header = self.tableTales.horizontalHeader() header.setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch) self.buttonSort = QtWidgets.QPushButton(Form) self.buttonSort.setMinimumSize(QtCore.QSize(80, 23)) self.buttonSort.setMaximumSize(QtCore.QSize(80, 23)) self.buttonSort.setObjectName("buttonSort") self.gridLayout.addWidget(self.buttonSort, 6, 3, 1, 1) self.buttonSort.clicked.connect(self.sortLinesReverse) self.showTales(self.tales) #... def sortLinesReverse(self): self.tales.sort(key=lambda tup: tup[0], reverse = True) self.showTales(self.tales) def showTales(self, tales): self.tableTales.clear() self.tableTales.setRowCount(len(tales)) line = 0 for tale in tales: #print(tale[0] + " " + tale[1]) To see in terminal. Getting slower after 100 lines when I press buttonSort. #self.tableTales.setItem(line, 0, QTableWidgetItem("test")) Works fine the problem probably is in str() self.tableTales.setItem(line, 0, QTableWidgetItem(str(tale[0]))) self.tableTales.setItem(line, 1, QTableWidgetItem(tale[1])) line += 1