многопоточность: небезопасно использовать растровые изображения вне потока GUI

Я создаю музыкальный проигрыватель, который проверяет статус с помощью SqueezePlay, приложения-контроллера SqueezeBox. Короче говоря, я проверяю статус Squeezeplay каждые 5 секунд с помощью потоковой передачи. Если название песни меняется, я разрешаю ему обновлять метки (Qlabel, обложку альбома (QPixmap) и т. Д.). Однако, когда я прошу обновить его через потоки, я получаю Небезопасно использовать растровые изображения вне поток графического интерфейса пользователя .

Как я могу использовать потоки, но все же установить QPixmap?

Пример кода:

#self.sq.getArtwork() returns variable with the image
coverArt = self.sq.getArtwork()
coverPixMap = QtGui.QPixmap()
coverPixMap.loadFromData(coverArt)
self.albumArt.setPixmap(coverPixMap)

Большое спасибо!

Обновление: Я пробовал следующее с Emit, но это не работает, может кто-нибудь посмотреть, что я делаю не так?

def setNewArtwork(self, image):
    coverPixMap = QtGui.QPixmap()
    coverPixMap.convertFromImage(image)
    icon = QtGui.QIcon(coverPixMap)
    item.setIcon(icon)

def getNewArtwork(self):
    coverArt = self.sq.getArtwork()
    icon = QtGui.QImage(coverArt)
    self.emit(QtCore.SIGNAL('setNewArtwork(QImage)'), icon)
5
задан ekhumoro 27 October 2016 в 16:56
поделиться