Mypy在PyQT的每个connect()中都显示"Callable...没有属性"connect""

3
使用PyQt5编写代码,并使用mypy查找类型错误。但是mypy在每次connect()上都会发现错误,例如在这个简单的文件中:
from PyQt5 import QtWidgets

class TestClass(QtWidgets.QDialog):
    def __init__(self) -> None:
        super().__init__()
        self.accepted.connect(self.accept)

我遇到了mypy错误:1.py:6: error: "Callable[[], None]" has no attribute "connect"

有没有办法向mypy解释这是正确的代码?我不想使用“ignore”注释来隐藏这个错误...


你确定QtWidgets.QDialog.accepted不是可调用的吗? - Azat Ibrakov
它应该是可调用的,它是一个我连接到插槽的信号。 - Vladimir Martyanov
你在使用什么类型的 PyQt 存根?似乎 QDialog 应该有类型存根,声明 QDialog.acceptedpyqtSignal 而不是 Callable。(或者你的 TestClass 尝试“覆盖” accepted 属性作为方法吗?) - Samwise
@Samwise,如何检查我的存根?我没有覆盖任何内容,这是一个完整的代码,用来说明“问题”。 - Vladimir Martyanov
1个回答

3

安装PyQt5-stubs类型的存根文件,用于PyQt5。

>mypy test.py
test.py:6: error: "Callable[[], None]" has no attribute "connect"
Found 1 error in 1 file (checked 1 source file)

>pip install PyQt5-stubs
Collecting PyQt5-stubs
  Downloading PyQt5_stubs-5.15.2.0-py3-none-any.whl (371 kB)
     |████████████████████████████████| 371 kB 3.3 MB/s
Installing collected packages: PyQt5-stubs
Successfully installed PyQt5-stubs-5.15.2.0

>mypy test.py
Success: no issues found in 1 source file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接