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 时出现同样的错误

我通过

安装了 PyQt5
conda 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 中的分段错误(核心转储)的主要内容,如果未能解决你的问题,请参考以下文章

获取“分段错误核心转储”

分段错误(核心转储) - 无法访问的计数器值

分段错误(核心转储)

运行我的代码时出现分段错误(核心转储)问题

编程求解器的分段错误(核心转储)

C中的Minishell“分段错误,核心转储”错误