PyQtGraph: проверка, если (sys.flags.interactive! = 1) или нет hasattr (QtCore, 'PYQT_VERSION') - PullRequest
1 голос
/ 11 января 2020

Я читаю несколько простых примеров использования PyQtGraph и заметил, что многие пишут:

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

Вместо только следующей строки:

QtGui.QApplication.instance().exec_()

Когда я должен использовать эти два условия в моем приложении?

1 Ответ

1 голос
/ 11 января 2020

Сначала вы должны понять 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, поэтому в этих случаях вам не следует использовать это условие.

...