· 正在搜索这个错误的同志,你的窒息,我感同身受!!!
需要说明,这个错误的原因千奇百怪,下文记录的,是我所遇到的情况,供同志们参考。
发生环境:windows 10 / Python 3.7 / Pycharm / PyQt5
错误原因:在子线程中修改主界面控件
解决方法:使用【信号 - 槽】机制,在子线程中抛出信号,主线程中接收信号,完成控件修改
代码示例 👇
import ... ...
# 自定义主界面 (假如你想每过2秒改变一下某个按钮的颜色)
class My_GUI(QtWidgets.QMainWindow, Ui_MainWindow):
# 这里定义信号
change_pushbutton_signal = QtCore.pyqtSignal()
def __init__(self):
... ...
# 初始化中,定义信号连接的槽函数
self.change_pushbutton_signal.connect(self.change_pushbutton)
# 主线程中新建子线程
def fun1(self):
change_thread = threading.Thread(target=self.subthread, daemon=Ture)
change_thread.start()
# 此方法已经在子线程中运行
def subthread(self):
# 若不使用信号,如下,直接在子线程中修改主界面控件,就会报 0xC0000005 错误
# self.pushbutton.setStyleSheet('background-color: rgb(182, 182, 182)')
# time.sleep(2)
# 因此,将上面的动作改为 ↓
while Ture:
self.change_pushbutton_signal.emit()
time.sleep(2)
# 此方法是在主线中执行的
def change_pushbutton(self):
self.pushbutton.setStyleSheet('background-color: rgb(182, 182, 182)')
......
以上,我解决了我遇到的 0xC0000005 错误,心脏恢复跳动 ~
另一位同志整理了另外六种情况,如下,大家请对号入座。这个同志是个好人呐!!
· 博主qiao1025566574: pycharm报错:Process finished with exit code -1073741819 (0xC0000005)