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。只有两个参数:parent
和 flags
,它们都有默认值。
(注意:你永远不应该将 self.__class__
与 super
一起使用,因为它在某些情况下会导致无限递归。始终将子类作为第一个参数传入 - 除非你正在使用Python 3,在这种情况下你可以省略所有参数)。
安装 pyQt5-stubs 将修复此错误。
我在 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。只有两个参数:parent
和 flags
,它们都有默认值。
(注意:你永远不应该将 self.__class__
与 super
一起使用,因为它在某些情况下会导致无限递归。始终将子类作为第一个参数传入 - 除非你正在使用Python 3,在这种情况下你可以省略所有参数)。
安装 pyQt5-stubs 将修复此错误。