Python 当Qwidget的背景颜色改变时,程序会随机崩溃

Python 当Qwidget的背景颜色改变时,程序会随机崩溃,python,python-multithreading,pyside2,qtstylesheets,Python,Python Multithreading,Pyside2,Qtstylesheets,设置背景色很好,但是我的界面有一个Qwidget,它可以在某个点更改背景色。这将导致程序崩溃,当我注释掉颜色更改代码时,崩溃停止 下面的代码在运行一段时间后肯定会崩溃 导入系统 从PySide2.QtWidgets导入QWidget、QPushButton、QApplication、QListWidget、QGridLayout、\ QLabel、QMainWindow、QLineEdit、QscrolArea、QVBoxLayout、QMessageBox 从PySide2.QtCore导入Q

设置背景色很好,但是我的界面有一个Qwidget,它可以在某个点更改背景色。这将导致程序崩溃,当我注释掉颜色更改代码时,崩溃停止

下面的代码在运行一段时间后肯定会崩溃

导入系统 从PySide2.QtWidgets导入QWidget、QPushButton、QApplication、QListWidget、QGridLayout、\ QLabel、QMainWindow、QLineEdit、QscrolArea、QVBoxLayout、QMessageBox 从PySide2.QtCore导入QTimer、QDateTime、QSize、Qt 从PySide2.QtGui导入* 导入请求,json 导入配置分析器# 导入操作系统 导入时间 导入线程# 从pynput导入键盘# 导入请求,json 从数学导入* 从functools导入部分 类主窗口(QMainWindow): 定义初始化(自): 超级(主窗口,自我)。\uuuu初始化 自我调整大小(320100) self.setWindowTitle('aaaa') self.setStyleSheet(“QMainWindow\ {\ 背景色:白色\ 颜色:白色\ 保证金:0px\ }") self.InitializeWindow()的 self.i=0 def初始化窗口(自身): self.statebar=QWidget(self) self.statebar.setGeometry(0,40,320,54) 打印(sys.\u getframe().f\u lineno) self.statebar.setStyleSheet(“QWidget{background color:#1EC5CD}”) self.th_countdown=threading.Thread(target=self.countdown,args=()) self.th_倒计时.setDaemon(True) self.th_倒计时开始() self.message_main=QLabel(self.statebar) 自信息主设置几何(150,7,40,37) self.message_main.setStyleSheet(“背景:透明;颜色:白色;边距:0px;字体大小:45px;字体重量:粗体”) self.message\u main.setWordWrap(True) self.message_main.hide() self.message_main.setAlignment(Qt.AlignTop | Qt.AlignLeft) self.message_signature=QLabel(self.statebar) 自我信息签名集几何(50,6,42,42) self.message_signature.setScaledContents(True) self.message_signature.setStyleSheet(“背景:透明”) self.message_result=QLabel(self.statebar) 自我信息结果集合几何(150,6160,25) self.message_result.setStyleSheet(“背景:透明;颜色:白色;边距:0px;字体大小:24px;字体重量:粗体”) self.message\u result.setWordWrap(True) self.message_result.hide() self.message_detail=QLabel(self.statebar) 自我信息详细信息设置几何(150,34160,15) self.message_detail.setStyleSheet(“背景:透明;颜色:白色;边距:0px;字体大小:14px”) self.message\u detail.setWordWrap(True) self.message_detail.hide() def绑定(自身、ret): self.message_result.show() self.message_detail.show() self.message_main.hide() 如果(ret%2==0): self.statebar.setStyleSheet(“QWidget{background color:#1EC5CD}”)##FA6400 self.message_result.setText(str(ret)) self.message_detail.setText(str(ret)) 其他: self.statebar.setStyleSheet(“QWidget{background color:#FA6400}”)##FA6400 self.message_result.setText(str(ret)) self.message_detail.setText(str(ret)) def倒计时(自): 而(一): 睡眠时间(0.2) self.i=self.i+1 self.bind(self.i) 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': app=0 app=QApplication(sys.argv) win=主窗口() #icon=QIcon() #icon.addPixmap(QPixmap(“./res/mdm.ico”),QIcon.Normal,QIcon.Off) #win.setWindowIcon(图标) win.show() sys.exit(app.exec_()) 通过
有时python抛出一条错误消息“无法解析对象的样式表…”,有时它只是在没有消息的情况下崩溃。

倒计时方法运行在GUI以外的线程上,您正在修改GUI,由于两个线程无法访问相同的资源,导致您指出的问题,因此该操作是不安全的。解决方案不是直接从另一个线程修改GUI,而是通过线程安全的信号:

导入系统 导入时间 导入线程 从PySide2.QtCore导入Qt、信号、插槽 从PySide2.QtWidgets导入QApplication、QLabel、QMainWindow、QWidget 类主窗口(QMainWindow): 值更改=信号(int) 定义初始化(自): 超级(主窗口,自我)。\uuuu初始化 自我调整大小(320100) self.setWindowTitle(“aaaa”) 自选表格( """ QMainWindow { 背景色:白色; 颜色:白色; 保证金:0px } """ ) self.InitializeWindow()的 self.i=0 self.valueChanged.connect(self.bind) def初始化窗口(自身): self.statebar=QWidget(self) self.statebar.setGeometry(0,40,320,54) 打印(sys.\u getframe().f\u lineno) self.statebar.setStyleSheet(“QWidget{background color:#1EC5CD}”) self.th_倒计时=threading.Thread(目标=self.countdown) self.th_倒计时.setDaemon(True) self.th_倒计时开始() self.message_main=QLabel(self.statebar) 自我信息主设置几何(150,7,40,37) self.message_main.setStyleSheet( “背景:透明;颜色:白色;边距:0px;字体大小:45px;字体重量:粗体” ) self.message\u main.setWordWrap(True) self.message_main.hide() self.message_main.setAlignment(Qt.AlignTop | Qt.AlignLeft) self.message_signature=QLabel(self.statebar) self.message_signature.setGeometry(50,6,42,42) self.message_signature.setScaledContents(True) self.message_signature.setStyleSheet(“背景:透明”) self.message_result=QLabel(self.statebar) self.message_result.setGeometry(150,6,160,25) self.message_result.setStyleSheet( “巴克