PyQtGraph:检查(sys.flags.interactive!= 1)是否具有hasattr(QtCore,'PYQT_VERSION')

问题描述 投票:0回答:1

[我正在阅读一些使用PyQtGraph的简单示例,并且我注意到很多人在写:

if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
    QtGui.QApplication.instance().exec_()

仅代替以下行:

QtGui.QApplication.instance().exec_()

我应何时在应用程序中使用这两个条件?

python sys pyqtgraph qtgui qtcore
1个回答
0
投票

首先,您必须了解QtGui.QApplication.instance().exec_(),您要做的是执行Qt事件循环。

让我们分析每个条件的含义:

  • [sys.flags.interactive:当您通过REPL以交互方式执行代码时,将激活此标志。当您使用Python控制台时。如果它不同于1,则表明由于REPL已经具有一个事件循环,因此不需要使用Qt事件循环。

  • [hasattr(QtCore, 'PYQT_VERSION'):pyqtgraph使用PyQt作为后端,因此如果您未安装PyQt,则将无法使用Qt eventloop,因此该条件将验证PyQt的安装,如果您的应用程序未安装已安装,将无法使用。

因此,建议您使用第一个条件,以便在使用或不使用交互模式的情况下,代码都不会出现问题。

相反,请使用第二种条件,以确保您已将PyQt安装为后端,但请记住,它当前还支持PySide和PySide2,因此在那种情况下,您不应使用该条件。

© www.soinside.com 2019 - 2024. All rights reserved.