Qt WebEngine似乎已经初始化。

10
当我运行我的Qt应用程序时,我会收到以下信息:

Qt WebEngine似乎是从插件中初始化的。 在构造QGuiApplication之前,请使用QCoreApplication :: setAttribute设置Qt :: AA_ShareOpenGLContexts。

尽管此消息被输出到终端,但该应用程序仍能正常运行。 我无法找到根本原因或真正理解此消息试图告诉我的内容。 这条消息在说什么,我该如何修复它?

看起来这是一个旧的 bug。你是否正在使用最新版本的 PyQt5 和 PyQtWebengine?请查看此线程:https://bugreports.qt.io/browse/QTBUG-51379 - eyllanesc
1
在没有Python的情况下,Qt 6.2.3仍存在问题。已接受的解决方案没有解释为什么需要这样做或它的作用是什么。 - Heath Raftery
2个回答

25

在生成QApplication之前,通过设置AA_ShareOpenGLContexts可以解决此问题。

以下是使用PySide2时的示例:

  from PySide2 import QtCore, QtWidgets

  if __name__ == '__main__':
      QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)
      qt_app = QtWidgets.QApplication(sys.argv)

NB:

如在问题回答中提到的一样,当使用PyQt5时,请查阅https://bugreports.qt.io/browse/QTBUG-51379


2
即使添加了这行代码,问题仍然存在。 - NL23codes
消息出现在导入QWebEngineView之后,甚至在应用程序创建之前。因此,这行代码将在问题已经发生之后出现。 - NL23codes
感谢 -> 通常Qt会自动在'main'中创建 -> app = QApplication([]) -> 所以当我按照你的建议更改后,错误消失了。我们选择PySide2的主要原因 - ati ince
1
我在使用pyside6时遇到了问题,只需要调整导入行为from PySide6.QtCore import QFile, QCoreApplication, Qt并从函数调用中省略QtCore命名空间即可。 - richbai90

0
使用PySide6代替PySide2解决了我的Python 3.9和QT 5.15的问题,如果有帮助的话。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接