Skip to content

Commit 5319ed4

Browse files
committed
add QEnum macro for PyQt bindings
1 parent 42afbc8 commit 5319ed4

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

qtpy/QtCore.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
from PyQt5.QtCore import pyqtBoundSignal as SignalInstance
1818
from PyQt5.QtCore import pyqtSlot as Slot
1919
from PyQt5.QtCore import pyqtProperty as Property
20+
try:
21+
from PyQt5.QtCore import Q_ENUM as QEnum
22+
del Q_ENUM
23+
except ImportError: # fallback for Qt5.9
24+
from PyQt5.QtCore import Q_ENUMS as QEnum
25+
del Q_ENUMS
2026
from PyQt5.QtCore import QT_VERSION_STR as __version__
2127

2228
# Those are imported from `import *`
@@ -29,6 +35,7 @@
2935
from PyQt6.QtCore import pyqtBoundSignal as SignalInstance
3036
from PyQt6.QtCore import pyqtSlot as Slot
3137
from PyQt6.QtCore import pyqtProperty as Property
38+
from PyQt6.QtCore import pyqtEnum as QEnum
3239
from PyQt6.QtCore import QT_VERSION_STR as __version__
3340

3441
# For issue #311
@@ -47,7 +54,7 @@
4754
QThread.exec_ = lambda self, *args, **kwargs: self.exec(*args, **kwargs)
4855

4956
# Those are imported from `import *`
50-
del pyqtSignal, pyqtBoundSignal, pyqtSlot, pyqtProperty, QT_VERSION_STR
57+
del pyqtSignal, pyqtBoundSignal, pyqtSlot, pyqtProperty, pyqtEnum, QT_VERSION_STR
5158

5259
# Allow unscoped access for enums inside the QtCore module
5360
from .enums_compat import promote_enums

qtpy/tests/test_qtcore.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Test QtCore."""
22

3+
import enum
34
import sys
45
from datetime import date, datetime, time
56

@@ -69,6 +70,21 @@ def test_qthread_exec_():
6970
assert QtCore.QThread.exec_ is not None
7071

7172

73+
def test_qenum():
74+
"""Test QEnum macro"""
75+
class EnumTest(QtCore.QObject):
76+
class Position(enum.IntEnum):
77+
West = 0
78+
North = 1
79+
South = 2
80+
East = 3
81+
82+
QtCore.QEnum(Position)
83+
84+
obj = EnumTest()
85+
assert obj.metaObject().enumerator(0).name() == "Position"
86+
87+
7288
def test_QLibraryInfo_location_and_path():
7389
"""Test `QLibraryInfo.location` and `QLibraryInfo.path`"""
7490
assert QtCore.QLibraryInfo.location is not None

0 commit comments

Comments
 (0)