pyqt5 中的分段错误(核心转储)
Posted
技术标签:
【中文标题】pyqt5 中的分段错误(核心转储)【英文标题】:Segmentation fault (core dumped) in pyqt5 【发布时间】:2018-01-24 14:39:56 【问题描述】:我尝试使用 QWebEnginePage 使 pyqt5 应用程序可重新启动。但是有段错误。这是代码示例:
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import qApp
#from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
class MainWindow(QMainWindow):
EXIT_CODE_REBOOT = -123
def __init__(self,parent=None):
QMainWindow.__init__(self, parent)
self.timer = QTimer()
self.timer.timeout.connect(self.restart)
self.timer.start(3 * 1000)
self.qwe = QWebEngineView()
#self.qp = QWebEnginePage() # uncomment this will cause Segmentation fault (core dumped)
def restart(self):
print('restart')
qApp.exit(MainWindow.EXIT_CODE_REBOOT)
if __name__=="__main__":
currentExitCode = MainWindow.EXIT_CODE_REBOOT
while currentExitCode == MainWindow.EXIT_CODE_REBOOT:
print('next..')
a = QApplication(sys.argv)
w = MainWindow()
w.show()
currentExitCode = a.exec_()
a = None
有了这个 cmets - 它工作正常。但是如果删除评论出现“Segmentation fault (core dumped)”。
你能给我一个建议吗?
编辑
在 PyQt 5.9.3 和 Ubuntu 14.04 上复制
【问题讨论】:
我在 Arch Linux 的 Qt 5.9.3 中尝试过,它不会产生那个错误。 @eyllanesc 你说的是没有 cmets 的版本?它必须多次打印“下一个”。 这就是我说它运行良好的原因,它不会产生分段错误(核心转储),每次计时器触发时都会打印next
。
我刚刚看到你的代码更好,我看到我必须取消注释一行,我会再试一次。
@Raj。将a = QApplication(sys.argv)
行放在while 循环之前并删除a = None
行。创建多个 QApplication 绝不安全(即使您尝试删除旧的)。
【参考方案1】:
我使用 anaconda PyQt5 时出现同样的错误
我通过
安装了 PyQt5conda install -c anaconda pyqt
错误结果:
>>> from PyQt5 import *
>>> from PyQt5.QtGui import *
Segmentation fault (core dumped)
解决者:
pip install PyQt5
结果:
>>> from PyQt5 import *
>>> from PyQt5.QtGui import *
>>>
希望它有效!
【讨论】:
以上是关于pyqt5 中的分段错误(核心转储)的主要内容,如果未能解决你的问题,请参考以下文章