mottosso / Qt.py

Minimal Python 2 & 3 shim around all Qt bindings - PySide, PySide2, PyQt4 and PyQt5.
MIT License
921 stars 252 forks source link

Qt6 QtCore.QRegularExpression not available in Qt.py #424

Open sylvainberger opened 1 week ago

sylvainberger commented 1 week ago

Hi, When I try to import QtCore.QRegularExpression from Qt, I get an error. Importing directly from PySide6 works.

Example in Python3.11 with PySide6 and Qt.py: Python 3.11.9 (main, Oct 30 2024, 17:54:48) [GCC 11.3.1 20221121 (Red Hat 11.3.1-4)] on linux Type "help", "copyright", "credits" or "license" for more information.

from Qt.QtCore import QRegularExpression Traceback (most recent call last): File "", line 1, in ImportError: cannot import name 'QRegularExpression' from 'Qt.QtCore' (unknown location) from PySide6.QtCore import QRegularExpression print(QRegularExpression) <class 'PySide6.QtCore.QRegularExpression'>

mottosso commented 1 week ago

Looks like it's been remapped to QRegExp for backwards compatibility with Qt 4 and 5.

sylvainberger commented 1 week ago

I can't make it work using QRegEx to get code compatible with Qt5 and Qt6

The best way I found is to do the import in try/except and use QRegularExpression

Example:

try:
    from PySide6.QtCore import QRegularExpression
except:
    from PySide2.QtCore import QRegularExpression

proxy_model = QtCore.QSortFilterProxyModel()
proxy_model.setFilterRegularExpression(QRegularExpression(re_pattern, QRegularExpression.CaseInsensitiveOption))

Any attemps to write compatible code using QRegEx fails in either Qt5 or Qt6