MyPy 抱怨 Qt.AlignmentFlag
Posted
技术标签:
【中文标题】MyPy 抱怨 Qt.AlignmentFlag【英文标题】:MyPy complains about Qt.AlignmentFlag 【发布时间】:2022-01-10 15:08:04 【问题描述】:当我升级到 PySide6 6.2.2 时,MyPy 开始抱怨 Qt.AlignmentFlag
。这是一个小例子:
from PySide6.QtGui import Qt
from PySide6.QtWidgets import QLabel, QApplication
app = QApplication()
label = QLabel("Hello, World!")
label.setAlignment(Qt.AlignCenter)
label.show()
app.exec()
这仍然运行良好,但 MyPy 抱怨:
$ mypy foo.py
foo.py:6: error: Argument 1 to "setAlignment" of "QLabel" has incompatible type "AlignmentFlag"; expected "Alignment"
Found 1 error in 1 file (checked 1 source file)
$
好的,我尝试将AlignmentFlag
转换为Alignment
。
from PySide6.QtGui import Qt
from PySide6.QtWidgets import QLabel, QApplication
app = QApplication()
label = QLabel("Hello, World!")
label.setAlignment(Qt.Alignment(Qt.AlignCenter))
label.show()
app.exec()
再次,运行良好,但 MyPy 现在抱怨构造函数。
$ mypy foo.py
foo.py:6: error: Too many arguments for "Alignment"
Found 1 error in 1 file (checked 1 source file)
$
谁能解释一下如何使用Qt.Alignment
和Qt.AlignmentFlag
?
【问题讨论】:
【参考方案1】:在我找到更好的选择之前,我会假设有人弄乱了 PySide6 6.2.2 中的类型提示,我会告诉 MyPy 忽略它。
from PySide6.QtGui import Qt
from PySide6.QtWidgets import QLabel, QApplication
app = QApplication()
label = QLabel("Hello, World!")
label.setAlignment(Qt.AlignCenter) # type: ignore
label.show()
app.exec()
【讨论】:
以上是关于MyPy 抱怨 Qt.AlignmentFlag的主要内容,如果未能解决你的问题,请参考以下文章
对于使用 `type()` 构造的类型,mypy“作为类型无效”