当我首先运行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 scaping代码:
我不知道如何解决它?
最好的问候。
谢谢。
答案 0 :(得分:3)
检查是否存在QApplication实例,因为当实例已经在运行并且您尝试创建一个新实例时会发生错误。
在您的主要功能中写下这个内容:
if not QtWidgets.QApplication.instance():
app = QtWidgets.QApplication(sys.argv)
else:
app = QtWidgets.QApplication.instance()
答案 1 :(得分:0)
对于我的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