Сначала вы должны понять QtGui.QApplication.instance().exec_()
, что вы делаете, это выполняете событие Qt l oop.
Давайте проанализируем, что подразумевает каждое условие:
sys.flags.interactive
: этот флаг активируется, когда вы выполняете код в интерактивном режиме через REPL , например, когда вы используете консоль Python (подробнее читайте Интерактивный режим Информация). Если он отличается от 1, это означает, что событие Qt l oop использовать не нужно, поскольку в REPL уже есть событие l oop.
hasattr(QtCore, 'PYQT_VERSION')
: pyqtgraph использует PyQt в качестве бэкэнда, поэтому, если у вас не установлен PyQt, событие Qtl oop будет невозможно, так что условие проверяет установку PyQt, и если ваше приложение не установлено, он не будет работать.
Поэтому первое условие рекомендуется использовать, чтобы у вашего кода не возникало проблем в тех случаях, когда вы используете или не используете интерактивный режим.
Вместо этого используйте второе условие, чтобы быть уверенным, что PyQt установлен в качестве бэкэнда, но имейте в виду, что в настоящее время он также поддерживает PySide и PySide2, поэтому в этих случаях вам не следует использовать это условие.