RuntimeError: Пожалуйста, уничтожьте синглтон QApplication перед созданием нового экземпляра QApplication - PullRequest
0 голосов
/ 24 апреля 2018

Когда я сначала запускаю сервер проектов python-pyside2, то он работает хорошо.
И сайт также работает хорошо, но если я нажимаю F5, чтобы обновить браузер.
Сайт показывает страницу ошибки Runtime в /

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

Ниже, scaping код с использованием pyside2:

Я не знаю, как я могу это исправить?
С уважением.
Благодарю.

1 Ответ

0 голосов
/ 08 мая 2019

Для моего модульного теста 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()

он был основан на переполнении стека : приложение, основанное на модульном и функциональном тестировании на основе pyside

...