[我正在阅读一些使用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控制台时。如果它不同于1,则表明由于REPL已经具有一个事件循环,因此不需要使用Qt事件循环。
[hasattr(QtCore, 'PYQT_VERSION')
:pyqtgraph使用PyQt作为后端,因此如果您未安装PyQt,则将无法使用Qt eventloop,因此该条件将验证PyQt的安装,如果您的应用程序未安装已安装,将无法使用。
因此,建议您使用第一个条件,以便在使用或不使用交互模式的情况下,代码都不会出现问题。
相反,请使用第二种条件,以确保您已将PyQt安装为后端,但请记住,它当前还支持PySide和PySide2,因此在那种情况下,您不应使用该条件。