我每分钟(当我的模型正在更新时)都更新tableView,没有任何问题,也没有冻结。
但是现在由于特定的提取,我的更新功能比以前花费了更多的时间,所以当我更新视图时,它会冻结直到我的更新功能终止。
如何在另一个线程中启动更新,以避免冻结视图?
我试图在thread_update中启动计时器,但冻结仍然存在
class TicketGUI(QAbstractTableModel):
def __init__(self, user_id, mdp, profile):
QAbstractTableModel.__init__(self)
self.EM = Extract(user_id, mdp) #Extract manager
self.tickets = Tickets()
self.tickets.load(self.EM, True) Load tickets from extract
data = self.tickets.toDataframe()
self._data = data
# Update my table view each 60 seconds
timer = QtCore.QTimer(self, timeout=self.on_timeout)
thread_update = Thread(target=timer.start(60 * 1000))
thread_update.start()
def rowCount(self, parent=None):
return self._data.shape[0]
def columnCount(self, parent=None):
return self._data.shape[1]
def data(self, index, role=Qt.DisplayRole):
[...]
def headerData(self, col, orientation, role=Qt.DisplayRole):
[...]
def update(self, data):
self.beginResetModel()
self._data = data
self.endResetModel()
def on_timeout(self):
self.tickets.load(self.EM) #Load tickets from extract (THIS TAKES TIME)
data = self.tickets.toDataframe()
self.update(data)