PyCharm 显示 PyQt 方法的错误参数信息

PyCharm showing wrong parameter info for PyQt methods

我在 GUI 方面的工作不多,但我决定从偶尔使用 PyQt4 转向 PyQt5。我的 IDE 向我发出有关某些 __init__ 函数的警告,尤其是 QWidget 和 QMainWindow。

如果您查看 IntelliSense 的参数,您会发现 parent 参数有默认值,而 flags 没有。 IDE 告诉我 flags 未填写,但当我不提供时,什么也没有发生。为什么会这样?

我正在使用 Python 3.5.

正确的签名是这样的:

QMainWindow(parent: QWidget = None,
            flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())

所以看起来您的 IDE 中的 IntelliSense 要么不知道如何正确解析类型提示,要么需要安装 PyQt stub files。只有两个参数:parentflags,它们都有默认值。

(注意:你永远不应该将 self.__class__super 一起使用,因为它在某些情况下会导致无限递归。始终将子类作为第一个参数传入 - 除非你正在使用Python 3,在这种情况下你可以省略所有参数)。

安装 pyQt5-stubs 将修复此错误。