PyQtGraph:检查是否 (sys.flags.interactive != 1) hasattr(QtCore, 'PYQT_VERSION')
PyQtGraph: Checking if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION')
我正在阅读一些使用 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 e.g. when you use the Python console (read Interactive Mode 以交互模式执行代码时,此标志被激活以获取更多信息)。如果它不同于 1,则意味着不需要使用 Qt 事件循环,因为 REPL 已经有一个事件循环。
hasattr(QtCore, 'PYQT_VERSION')
: pyqtgraph 使用 PyQt 作为后端,所以如果你没有安装 PyQt,Qt 事件循环将是不可能的,所以该条件验证 PyQt 的安装,如果您的应用程序未安装,它将无法运行。
所以第一个条件建议你使用它,这样无论你使用交互模式还是不使用交互模式,你的代码都不会有问题。
相反,请使用第二个条件,这样您就可以确定已将 PyQt 安装为后端,但请记住它目前还支持 PySide 和 PySide2,因此在这些情况下您不应使用该条件。
我正在阅读一些使用 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 e.g. when you use the Python console (read Interactive Mode 以交互模式执行代码时,此标志被激活以获取更多信息)。如果它不同于 1,则意味着不需要使用 Qt 事件循环,因为 REPL 已经有一个事件循环。hasattr(QtCore, 'PYQT_VERSION')
: pyqtgraph 使用 PyQt 作为后端,所以如果你没有安装 PyQt,Qt 事件循环将是不可能的,所以该条件验证 PyQt 的安装,如果您的应用程序未安装,它将无法运行。
所以第一个条件建议你使用它,这样无论你使用交互模式还是不使用交互模式,你的代码都不会有问题。
相反,请使用第二个条件,这样您就可以确定已将 PyQt 安装为后端,但请记住它目前还支持 PySide 和 PySide2,因此在这些情况下您不应使用该条件。