检查PyQt / PySide方法签名

时间:2019-06-06 13:41:51

标签: qt pyqt pyside signature

QWidget (PySide)构造函数接受f关键字,但是QWizard具有flags自变量而不是f。可以事先检查方法签名吗?我希望能够将标志传递给任何QWidget子类。

1 个答案:

答案 0 :(得分:0)

如前所述,QWidget接受fQDialog也接受fQWizard似乎是使用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)