2
これはシンプルなマンガリーダです。メインウィンドウをフリーズせずにイメージを読み込もうとしていますが、スレッドでこれをしようとしましたが、メインウィンドウ、何が間違っていますか?また、私は感謝を知りたい別の方法がある場合は、私はPythonに新しいです。他のスレッドからguiにラベルを送るにはどうすればいいですか? - PyQt
from PyQt5 import QtCore, QtGui, QtWidgets
import os
class MainWin(QtWidgets.QMainWindow):
...
def add_widget(self, data):
self.verticalLayout.addWidget(data)
def file_open(self):
adres = QtWidgets.QFileDialog.getExistingDirectory()
self.loader = LoaderThread(adres)
self.loader.start()
self.loader.pics.connect(self.add_widget)
class LoaderThread(QtCore.QThread):
pics = QtCore.pyqtSignal(object)
def __init__(self, nAdres):
QtCore.QThread.__init__(self)
self.adres = nAdres
def run(self):
liste = os.listdir(self.adres)
order = 0
for i in liste:
label = QtWidgets.QLabel()
pixmap = QtGui.QPixmap(self.adres + '/' + liste[order])
label.setPixmap(pixmap)
self.pics.emit(label)
order += 1
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
win = MainWin()
win.show()
sys.exit(app.exec_())
関連:http://stackoverflow.com/questions/28925473/qpixmap-not-safe-outside-gui- thread関連して、セカンダリスレッドからのGUIオブジェクト( 'QLabel'など)を使用することはできません。リンクのアドバイスを考えて、スレッド間に 'QImage'を使い、メインスレッドで' QLabel'を構築してください。 –