Я создаю музыкальный проигрыватель, который проверяет статус с помощью 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)