实际上,我尝试做一个html页面的显示器。我有一些需要显示的html列表,每个页面必须在x秒内保持可见。 但是,在显示第一页之后,应用程序崩溃并且python shell随后重新启动。
在我看来,我将创建一个显示页面并关闭应用程序的窗口,因为在尝试显示png / jpg之后,我需要关闭应用程序以将Pygame用于图片并重新构建该应用程序才能显示html页面之后。 我的清单正在寻找它: html页面/ html页面/图片/ html页面/图片/图片
因此,我建立了一个示例代码,以便在显示器中加入一个测试代码:
from PyQt5 import QtWidgets, QtWebEngineWidgets, QtCore
import sys
continuer = True
while continuer:
print("Application created")
# Create application
app = QtWidgets.QApplication(sys.argv)
# Add window
win = QtWidgets.QWidget()
win.setWindowTitle('My first rendering')
# Add layout
layout = QtWidgets.QVBoxLayout()
win.setLayout(layout)
# Create QWebView
view = QtWebEngineWidgets.QWebEngineView()
view.setUrl(QtCore.QUrl('https://google.com'))
# Add QWebView to the layout
layout.addWidget(view)
# Show window, run app
win.show()
QtCore.QTimer.singleShot(7*1000, win.close)
QtCore.QTimer.singleShot(7*1000, app.quit)
print("View displayed")
# While loop
app.exec_()
print('Close Application')
print("End While Loop")
执行后的结果
可能是app var中的sys.argv错误,但是我是Python新手,所以我不知道如何解决该问题。
答案 0 :(得分:1)
问题在于不一定要消除QApplication,因此您将创建多个Qt禁止的QApplication,更好的解决方案是重新考虑它,以验证它是否不存在然后创建一个新的:
import sys
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
continuer = True
while continuer:
print("Application created")
# Create application
app = QtWidgets.QApplication.instance()
if app is None:
app = QtWidgets.QApplication(sys.argv)
# Add window
win = QtWidgets.QWidget()
win.setWindowTitle("My first rendering")
# Create QWebEngineView
view = QtWebEngineWidgets.QWebEngineView()
view.setUrl(QtCore.QUrl("https://google.com"))
# Add layout
layout = QtWidgets.QVBoxLayout(win)
win.setLayout(layout)
# Add QWebView to the layout
layout.addWidget(view)
# Show window, run app
win.show()
QtCore.QTimer.singleShot(7 * 1000, win.close)
QtCore.QTimer.singleShot(7 * 1000, app.quit)
print("View displayed")
# While loop
app.exec_()
print("Close Application")
print("End While Loop")