SqueezeBoxコントローラーアプリであるSqueezePlayでステータスをチェックする音楽プレーヤーを作成しています。簡単に言うと、スレッドを使用してSqueezeplayのステータスを5秒ごとにチェックしています。曲のタイトルが変更された場合は、ラベル(Qlabel、アルバムアートワーク(QPixmap)など)を更新させます。ただし、スレッドを介して更新するように依頼すると、GUIスレッドの外部でピックスマップを使用するのは安全ではありません。。
どうすればスレッド化を実行できますが、それでも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)