File tree Expand file tree Collapse file tree 2 files changed +45
-1
lines changed
Expand file tree Collapse file tree 2 files changed +45
-1
lines changed Original file line number Diff line number Diff line change 55"""
66Compatibility functions
77"""
8+ import enum
89import sys
910
1011from . import (
@@ -200,3 +201,26 @@ def isalive(obj):
200201
201202 return shiboken .isValid (obj )
202203 return None
204+
205+
206+ # =============================================================================
207+ def getenumasint (enum_value ):
208+ """Get the integer value of a Qt enum
209+ For example:
210+ Qt.AlignmentFlag.AlignBaseline -> 256
211+ Qt.WidgetAttribute.WA_AcceptDrops -> 78
212+ If an integer is passed in, simply return it.
213+ PySide2's enums are themselves classes, not enum values per se, so if
214+ we get an integer or a class, return the class.
215+ """
216+ if isinstance (enum_value , enum .Enum ):
217+ if PYSIDE2 or PYQT5 :
218+ return int (enum_value )
219+ return enum_value .value
220+ return enum_value
221+
222+
223+ # =============================================================================
224+ def getenumfromint (enum_class , i ):
225+ """Get the Qt enum value from an integer"""
226+ return enum_class (i )
Original file line number Diff line number Diff line change 11"""Test the compat module."""
2+
23import sys
34
45import pytest
6+ from packaging import version
57
6- from qtpy import QtWidgets , compat
8+ from qtpy import PYQT5 , PYQT_VERSION , QtWidgets , compat
79from qtpy .tests .utils import not_using_conda
810
911
@@ -22,3 +24,21 @@ def test_isalive(qtbot):
2224 with qtbot .waitSignal (test_widget .destroyed ):
2325 test_widget .deleteLater ()
2426 assert compat .isalive (test_widget ) is False
27+
28+
29+ def test_getenumasint ():
30+ """Test compat.getenumasint"""
31+ if PYQT5 and version .parse (PYQT_VERSION ) <= version .parse ("5.9.2" ):
32+ assert compat .getenumasint (QtWidgets .QSizePolicy .Maximum ) == 4
33+ else :
34+ assert compat .getenumasint (QtWidgets .QSizePolicy .Policy .Maximum ) == 4
35+ assert compat .getenumasint (5 ) == 5
36+
37+
38+ def test_getenumfromint ():
39+ """Test compat.getenumfromint"""
40+ enum_value = compat .getenumfromint (QtWidgets .QSizePolicy .Policy , 7 )
41+ if PYQT5 and version .parse (PYQT_VERSION ) <= version .parse ("5.9.2" ):
42+ assert enum_value == QtWidgets .QSizePolicy .Expanding
43+ else :
44+ assert enum_value == QtWidgets .QSizePolicy .Policy .Expanding
You can’t perform that action at this time.
0 commit comments