我正在阅读一些使用PyQtGraph的简单示例,我注意到许多人写道:

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


而不是仅以下行:

QtGui.QApplication.instance().exec_()


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

最佳答案

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

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


sys.flags.interactive:当您通过REPL以交互方式执行代码时,此标志将被激活。当您使用Python控制台时(有关更多信息,请阅读Interactive Mode)。如果它不同于1,则表示由于REPL已经具有事件循环,因此不需要使用Qt事件循环。
hasattr(QtCore, 'PYQT_VERSION'):pyqtgraph使用PyQt作为后端,因此,如果您未安装PyQt,则将无法使用Qt eventloop,因此该条件将验证PyQt的安装,并且如果未安装您的应用程序,它将无法正常工作。


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

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

关于python - PyQtGraph:检查(sys.flags.interactive!= 1)是否具有hasattr(QtCore,'PYQT_VERSION'),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59691486/

10-09 02:46