QWidget (PySide)构造函数接受f
关键字,但是QWizard具有flags
自变量而不是f
。可以事先检查方法签名吗?我希望能够将标志传递给任何QWidget子类。
答案 0 :(得分:0)
如前所述,QWidget接受f
,QDialog也接受f
。 QWizard似乎是使用flags
的单数。由于inspect.getfullargspec()不适用于PySide对象,因此,如果需要在运行时确定此功能,建议使用辅助函数。帮助程序将必须基于已知的窗口小部件类列表来确定是使用 f 还是 flags 关键字参数。
from PySide2 import QtWidgets
FLAGS_WIDGETS = (QtWidgets.QWizard,)
def flags_kwarg(cls, flags):
if issubclass(cls, FLAGS_WIDGETS):
key = 'flags'
else:
key = 'f'
return {key: flags}
然后可以用作:
from PySide2 import QtCore
cls = QtWidgets.QWizard # or some other widget class
flags = QtCore.Qt.WindowFlags()
kwargs = flags_kwarg(cls, flags)
widget = cls(parent, **kwargs)