У меня есть код ниже, и я заметил, что, когда я нажимаю Ctrl + A, чтобы выделить все строки, он чувствует себя запаздывающим, что занимает около 1 секунды для завершения выбора.Однако я также заметил, что если я скрываю горизонтальный заголовок с помощью self.horizontalHeader().hide()
, отставание полностью исчезает!Почему это происходит?И как я могу избавиться от лага, но сохранить свой заголовок?
from PyQt5 import QtGui, QtCore, QtWidgets
from PyQt5.QtCore import Qt
import pandas as pd
import numpy as np
import sys
class SeriesModel(QtCore.QAbstractTableModel):
def __init__(self, series):
super().__init__()
self.series = series
def columnCount(self, parent=None):
return 1
def rowCount(self, parent=None):
return len(self.series)
def data(self, index, role=None):
row = index.row()
col = index.column()
if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.ToolTipRole:
return str(self.series[row])
# The headers of this table will show the level names of the MultiIndex
def headerData(self, section, orientation, role=None):
if role in [QtCore.Qt.DisplayRole, QtCore.Qt.ToolTipRole]:
if orientation == Qt.Horizontal:
return str(self.series.name)
class SeriesView(QtWidgets.QTableView):
def __init__(self, series):
super().__init__()
self.setModel(SeriesModel(series))
# self.horizontalHeader().hide()
# Examples
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
series = pd.Series(np.random.randn(1000000)).rename('MyData')
view = SeriesView(series)
view.show()
sys.exit(app.exec_())