Qt verfügt über mehrere IntEnums, die benutzerdefinierte, vom Benutzer angegebene Typen oder Rollen unterstützen. Einige Beispiele sind:
In beiden Fällen wird ein Benutzertyp/eine Benutzerrolle erstellt, indem eine Ganzzahl >= der Benutzertyp/die Benutzerrolle ausgewählt wird
Code: Select all
myType = QtCore.QEvent.Type.User + 1
Das Problem besteht darin, dass alle Funktionen, die sich mit diesen Typen/Rollen befassen, eine Instanz von IntEnum und kein int erwarten und mypy eine meldet Fehler.
Code: Select all
from PySide6.QtCore import QEvent
class MyEvent(QEvent):
def __init__(self) -> None:
super().__init__(QEvent.Type.User + 1)
Mypy-Fehler:
Code: Select all
No overload variant of "__init__" of "QEvent" matches argument type "int"
Die integrierte Typprüfung in VS-Code mit Pylance führt zu einem ähnlichen Fehler:
Code: Select all
No overloads for "__init__" match the provided arguments PylancereportCallIssue
QtCore.pyi(2756, 9): Overload 2 is the closest match
Argument of type "int" cannot be assigned to parameter "type" of type "Type" in function "__init__"
"int" is not assignable to "Type" PylancereportArgumentType
Welche Art von Hinweisen kann ich von meiner Seite aus tun, um Mypy zufriedenzustellen? Muss dies beim Qt-Typhinweis geändert werden?
Qt verfügt über mehrere IntEnums, die benutzerdefinierte, vom Benutzer angegebene Typen oder Rollen unterstützen. Einige Beispiele sind:
[list]
[*][code]QtCore.Qt.ItemDataRole.UserRole[/code]
[*][code]QtCore.QEvent.Type.User[/code]
[/list]
In beiden Fällen wird ein Benutzertyp/eine Benutzerrolle erstellt, indem eine Ganzzahl >= der Benutzertyp/die Benutzerrolle ausgewählt wird
[code]myType = QtCore.QEvent.Type.User + 1
[/code]
Das Problem besteht darin, dass alle Funktionen, die sich mit diesen Typen/Rollen befassen, eine Instanz von IntEnum und kein int erwarten und mypy eine meldet Fehler.
[code]from PySide6.QtCore import QEvent
class MyEvent(QEvent):
def __init__(self) -> None:
super().__init__(QEvent.Type.User + 1)
[/code]
Mypy-Fehler:
[code]No overload variant of "__init__" of "QEvent" matches argument type "int"
[/code]
Die integrierte Typprüfung in VS-Code mit Pylance führt zu einem ähnlichen Fehler:
[code]No overloads for "__init__" match the provided arguments PylancereportCallIssue
QtCore.pyi(2756, 9): Overload 2 is the closest match
Argument of type "int" cannot be assigned to parameter "type" of type "Type" in function "__init__"
"int" is not assignable to "Type" PylancereportArgumentType
[/code]
Welche Art von Hinweisen kann ich von meiner Seite aus tun, um Mypy zufriedenzustellen? Muss dies beim Qt-Typhinweis geändert werden?