自制PyQt5网页浏览器启动即崩溃,提示Python已停止运行怎么解决?
问题原因
崩溃日志中的故障模块ig4icd32.dll是英特尔集成显卡的32位OpenGL驱动文件,异常代码c0000005属于内存访问越界错误,触发崩溃的核心原因是:QWebEngineView默认启用GPU硬件加速渲染网页,你当前设备搭载的旧版英特尔核显驱动(适配Windows 7系统)对新版PyQt5的WebEngine硬件加速接口适配存在缺陷,调用渲染接口时触发驱动层的内存访问错误,直接导致程序启动即崩溃。
你编写的业务代码本身没有逻辑错误,无需调整功能实现逻辑。
解决方案
按优先级从高到低尝试即可:
- 方案1:禁用Qt的GPU硬件加速(最简单通用,优先选择)
在实例化QApplication之前添加一行属性配置,强制使用软件OpenGL渲染,绕过显卡驱动适配问题,修改后的代码启动部分如下:
import sys from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtWebEngineWidgets import * class MainWindow(QMainWindow): # 你的原有类实现代码完全不变 def __init__(self): super(MainWindow, self).__init__() self.browser = QWebEngineView() self.browser.setUrl(QUrl('http://google.com')) self.setCentralWidget(self.browser) self.showMaximized() # navbar navbar = QToolBar() self.addToolBar(navbar) back_btn = QAction('Back', self) back_btn.triggered.connect(self.browser.back) navbar.addAction(back_btn) forward_btn = QAction('Forward', self) forward_btn.triggered.connect(self.browser.forward) navbar.addAction(forward_btn) reload_btn = QAction('Reload', self) reload_btn.triggered.connect(self.browser.reload) navbar.addAction(reload_btn) home_btn = QAction('Home', self) home_btn.triggered.connect(self.navigate_home) navbar.addAction(home_btn) self.url_bar = QLineEdit() self.url_bar.returnPressed.connect(self.navigate_to_url) navbar.addWidget(self.url_bar) self.browser.urlChanged.connect(self.update_url) def navigate_home(self): self.browser.setUrl(QUrl('http://google.com')) def navigate_to_url(self): url = self.url_bar.text() self.browser.setUrl(QUrl(url)) def update_url(self, q): self.url_bar.setText(q.toString()) if __name__ == '__main__': # 新增这行配置,禁用GPU硬件加速 QApplication.setAttribute(Qt.AA_UseSoftwareOpenGL, True) app = QApplication(sys.argv) QApplication.setApplicationName('Lunar Browser') window = MainWindow() app.exec_()
- 方案2:更新英特尔集成显卡驱动
下载对应你的核显型号、适配Windows 7系统的最新官方驱动,安装完成后重启设备再运行程序即可。如果你的核显型号过老,英特尔已经停止提供Win7系统的驱动更新,直接用方案1即可。 - 方案3:降级PyQt5版本
如果前两个方案都不生效,可以将PyQt5和PyQtWebEngine降级到兼容性更好的5.12.x版本,执行以下安装命令即可:
pip install PyQt5==5.12.3 PyQtWebEngine==5.12.3
内容的提问来源于stack exchange,提问作者BeastXFaheem
相关产品推荐
相关产品推荐

