【问题标题】:MyPy complains about Qt.AlignmentFlagMyPy 抱怨 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.AlignmentQt.AlignmentFlag

【问题讨论】:

    标签: qt pyside6


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 2023-02-10
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 2020-06-25
      相关资源
      最近更新 更多