我正在阅读一些使用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/