如何在PySide2中检查gui vs命令行模式?

时间:2018-03-18 01:11:03

标签: python qt qt5 pyqt5 pyside2

在我的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++ examples并没有告诉我如何使用Python来解决这个问题。

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

1 个答案:

答案 0 :(得分:1)

最后,我需要做的就是:

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

在GUI模式下返回True,在命令行/批处理模式下返回False。 感谢ekhumoro指出我正确的方向!