1

在我的 PySide2 代码中,我需要检查程序是否以 gui 模式或命令行运行。在 PySide 我曾经这样做:

if QApplication.type() == QApplication.Type.GuiClient:
    # do stuff

但是,根据http://doc.qt.io/qt-5/sourcebreaks.html

QCoreApplication::Type 和 QApplication::type() 被移除。这些 Qt 3 遗留应用程序类型与 Qt 5 中可用的应用程序类型不匹配。改用 qobject_cast 来动态找出确切的应用程序类型。

我的 PySide 程序在主机应用程序中运行,所以我自己没有创建 QCoreApplication 实例,我只需要检查主机应用程序是否处于批处理模式(非 GUI),以避免一些问题。

我现在的问题是如何使用qobject_cast在 PySide2 中实现相同的功能?文档中的C++ 示例并没有告诉我如何使用 Python 进行此操作。

有人可以提供一个例子或建议其他方法来实现同样的事情吗?

4

1 回答 1

3

In the end all I needed to do was:

isinstance(QtWidgets.QApplication.instance(), QtWidgets.QApplication)

which returns True when in GUI mode and False when in command line/batch mode. Thanks ekhumoro for pointing me in the right direction!

于 2018-03-18T05:15:08.527 回答