【问题标题】:RuntimeError: Please destroy the QApplication singleton before creating a new QApplication instanceRuntimeError: 请在创建新的 QApplication 实例之前销毁 QApplication 单例
【发布时间】:2018-10-04 22:23:30
【问题描述】:

当我首先运行 python-pyside2 项目服务器时,它运行良好。
而且该网站也运行良好,但如果我按 F5 btn 在浏览器中刷新。
站点显示错误页面运行时在/

import sys

from urllib.request import urlopen  
from bs4 import BeautifulSoup 

from PySide2.QtGui import *  
from PySide2.QtCore import *  
from PySide2.QtWebKitWidgets import *  
from PySide2.QtWidgets import QApplication 

class dynamic_render(QWebPage):

    def __init__(self, url):
        self.frame = None
        self.app = QApplication(sys.argv)
        QWebPage.__init__(self)
        self.loadFinished.connect(self._loadFinished)  
        self.mainFrame().load(QUrl(url))
        QTimer.singleShot(0, self.sendKbdEvent)
        QTimer.singleShot(100, app.quit)
        self.app.exec_()

    def _loadFinished(self, result):  
        self.frame = self.mainFrame()  
        self.app.quit()
        self.app = None

下面,使用 pyside2 转义代码:

不知道怎么解决?
最好的问候。
谢谢。

【问题讨论】:

标签: python-3.x qt pyqt5 pyside2


【解决方案1】:

检查是否已经存在 QApplication 的实例,因为当实例已经在运行并且您正在尝试创建新实例时会发生错误。

在你的主函数中写下:

if not QtWidgets.QApplication.instance():
    app = QtWidgets.QApplication(sys.argv)
else:
    app = QtWidgets.QApplication.instance()

【讨论】:

    【解决方案2】:

    对于我的 pyside2 单元测试,以下工作相当好

    import PySide2
    import unittest
    
    class Test_qapplication(unittest.TestCase):
    
        def setUp(self):
            super(Test_qapplication, self).setUp()
            if isinstance(PySide2.QtGui.qApp, type(None)):
                self.app = PySide2.QtWidgets.QApplication([])
            else:
                self.app = PySide2.QtGui.qApp
    
    
        def tearDown(self):
            del self.app
            return super(Test_qapplication, self).tearDown()
    

    它大致基于stack overflow : unit-and-functional-testing-a-pyside-based-application

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      • 2015-01-24
      • 2017-02-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多