我在 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,在这种情况下您可以省略所有参数)。
