先说一下环境 win10 python3.7.7 PyQt5 5.14.2
用QtDesigner做了个页面
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setStyleSheet("")
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "TextLabel"))
然后起线程循环将5张图片写入页面的label中
import time
from threading import Thread
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys
from ui.main_page import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
super().setupUi(self)
self.label.setScaledContents(True)
thread = Thread(target=self.background_receiver, args=(self.label,), daemon=True)
thread.start()
def background_receiver(self, pic_label):
files = ("D:\\material\\avatar\\baomao.jpeg",
"D:\\material\\avatar\\isu.jpeg",
"D:\\material\\avatar\\meng.jpeg",
"D:\\material\\avatar\\van.jpeg",
"D:\\material\\avatar\\yeah.jpeg",)
while True:
for file in files:
image = QPixmap()
image.load(file)
pic_label.setPixmap(image)
time.sleep(0.25)
app = QApplication(sys.argv)
m = MainWindow()
m.show()
sys.exit(app.exec_())
启动没有问题,但是只要拖拽改变窗口大小,页面就会崩溃
Process finished with exit code -1073740940 (0xC0000374)
https://blog.csdn.net/guizaijianchic/article/details/77876918
线程崩了,加锁,或者Signal()信道通信