在我的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来解决这个问题。
有人可以提供一个例子或建议其他方法来实现同样的目标吗?
答案 0 :(得分:1)
最后,我需要做的就是:
isinstance(QtWidgets.QApplication.instance(), QtWidgets.QApplication)
在GUI模式下返回True,在命令行/批处理模式下返回False。 感谢ekhumoro指出我正确的方向!