Это, должно быть, самая большая неприятность, с которой я столкнулся при использовании PyQT: я собрал поток эскизов для своего приложения (мне нужно отображать тонны больших изображений), и похоже, что он будет работать (и он почти делает). Моя основная проблема заключается в этом сообщении об ошибке всякий раз, когда я отправляю SIGNAL
из своего потока:
QPixmap: It is not safe to use pixmaps outside the GUI thread
Я не могу понять, как обойти это. Я пытался передать QIcon
через свой SIGNAL
, но это по-прежнему вызывает ту же ошибку. Если это поможет, вот блоки кода, которые имеют дело с этим:
Класс Thumbnailer
:
class Thumbnailer(QtCore.QThread):
def __init__(self, ListWidget, parent = None):
super(Thumbnailer, self).__init__(parent)
self.stopped = False
self.completed = False
self.widget = ListWidget
def initialize(self, queue):
self.stopped = False
self.completed = False
self.queue = queue
def stop(self):
self.stopped = True
def run(self):
self.process()
self.stop()
def process(self):
for i in range(self.widget.count()):
item = self.widget.item(i)
icon = QtGui.QIcon(str(item.text()))
pixmap = icon.pixmap(72, 72)
icon = QtGui.QIcon(pixmap)
item.setIcon(icon)
Часть, которая вызывает поток (это происходит, когда набор изображений помещается в список):
self.thread.images.append(f)
item = QtGui.QListWidgetItem(f, self.ui.pageList)
item.setStatusTip(f)
self.thread.start()
Я не уверен, как справляться с такими вещами, так как я просто новичок в графическом интерфейсе;)
Спасибо всем.