NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2613 most downloaded on PyPI
Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6).
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 3 weeks to 13 months
Most releases are documented
notes for 33 of 41 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
42 releases · first in 2015
PR: Ignore PySide6 QSqlDatabase.exec DeprecationWarning by @juliangilbey in https://github.com/spyder-ide/qtpy/pull/506
QMenu and QToolBar isinstance checks succeed and remove unneeded wrapper classes by @dalthviz in https://github.com/spyder-ide/qtpy/pull/507QSqlDatabase.exec DeprecationWarning by @juliangilbey in https://github.com/spyder-ide/qtpy/pull/506Mambaforge usage and update Linux setup (CI) by @dalthviz in https://github.com/spyder-ide/qtpy/pull/511Full Changelog: https://github.com/spyder-ide/qtpy/compare/v2.4.2...v2.4.3
QMenu and QToolBar isinstance checks succeed and remove unneeded wrapper classes by @dalthviz in #507QSqlDatabase.exec DeprecationWarning by @juliangilbey in #506Mambaforge usage and update Linux setup (CI) by @dalthviz in #511Full Changelog: v2.4.2...v2.4.3
One column per quarter.
In this release 4 issues were closed.
Mambaforge usage and update Linux setup (CI), by @dalthviz (501)QMenu and QToolBar isinstance checks succeed and remove unneeded wrapper classes , by @dalthviz (505, 502)QSqlDatabase.exec DeprecationWarning, by @juliangilbeyIn this release 3 pull requests were closed.
PR: Update coveralls config (CI) by @dalthviz in https://github.com/spyder-ide/qtpy/pull/428
QAction.setShortcut and setShortcuts accept many types by @StSav012 in https://github.com/spyder-ide/qtpy/pull/461pytest.importorskip usage (CI) by @dalthviz in https://github.com/spyder-ide/qtpy/pull/486QtCore.Qt.MouseButton.MidButton alias for Qt6 by @PierreRaybaut in https://github.com/spyder-ide/qtpy/pull/475Full Changelog: https://github.com/spyder-ide/qtpy/compare/v2.4.1...v2.4.2
QAction.setShortcut and setShortcuts accept many types by @StSav012 in #461pytest.importorskip usage (CI) by @dalthviz in #486QtCore.Qt.MouseButton.MidButton alias for Qt6 by @PierreRaybaut in #475Full Changelog: v2.4.1...v2.4.2
In this release 3 issues were closed.
pytest.importorskip usage (CI), by @dalthviz (485)QtCore.Qt.MouseButton.MidButton alias for Qt6, by @PierreRaybautQAction.setShortcut and setShortcuts accept many types, by @StSav012In this release 9 pull requests were closed.
[pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/spyder-ide/qtpy/pull/456
PySide6.QtWebEngineCore/QtWebEngineWidgets (QWebEngineScrip vs QWebEngineScript) by @damonlynch in https://github.com/spyder-ide/qtpy/pull/455Full Changelog: https://github.com/spyder-ide/qtpy/compare/v2.4.0...v2.4.1
PySide6.QtWebEngineCore/QtWebEngineWidgets (QWebEngineScrip vs QWebEngineScript) by @damonlynch in #455Full Changelog: v2.4.0...v2.4.1
In this release 2 issues were closed.
PySide6.QtWebEngineCore/QtWebEngineWidgets (QWebEngineScrip vs QWebEngineScript) , by @damonlynchIn this release 3 pull requests were closed.
PR: Update bindings upper bound version to 6.5 and ignore DeprecationWarning (CI) by @dalthviz in https://github.com/spyder-ide/qtpy/pull/443
path and location of QLibraryInfo by @StSav012 in https://github.com/spyder-ide/qtpy/pull/420QtGui, QtWidgets and QtOpenGL* related modules by @DaelonSuzuka in https://github.com/spyder-ide/qtpy/pull/387QDateTime.toPython and toPyDateTime, etc. by @StSav012 in https://github.com/spyder-ide/qtpy/pull/421exec_ elsewhere where needed, and test them by @StSav012 in https://github.com/spyder-ide/qtpy/pull/422QFileDialog get*methods by @Czaki in https://github.com/spyder-ide/qtpy/pull/433utils.py to _utils.py to make it private by @StSav012 in https://github.com/spyder-ide/qtpy/pull/431exec() for PySide2 by @StSav012 in https://github.com/spyder-ide/qtpy/pull/438DeprecationWarning (CI) by @dalthviz in https://github.com/spyder-ide/qtpy/pull/443QMenu.addAction and QToolBar.addAction compatible with Qt6 arguments' order by @StSav012 in https://github.com/spyder-ide/qtpy/pull/437Qt.ItemFlags access as Qt.ItemFlag alias (PyQt6) by @dalthviz in https://github.com/spyder-ide/qtpy/pull/444QDropEvent pos and posF methods by @dalthviz in https://github.com/spyder-ide/qtpy/pull/445QtWidgets.QFileDialog.Options access as QtWidgets.QFileDialog.Option alias (PyQt6) by @dalthviz in https://github.com/spyder-ide/qtpy/pull/448QEnum macro for PyQt bindings by @phil65 in https://github.com/spyder-ide/qtpy/pull/424QFileDialog static methods kwarg compatibility by @dalthviz in https://github.com/spyder-ide/qtpy/pull/449PyQt extra packages by @dalthviz in https://github.com/spyder-ide/qtpy/pull/446Full Changelog: https://github.com/spyder-ide/qtpy/compare/v2.3.1...v2.4.0
path and location of QLibraryInfo by @StSav012 in #420QtGui, QtWidgets and QtOpenGL* related modules by @DaelonSuzuka in #387QDateTime.toPython and toPyDateTime, etc. by @StSav012 in #421exec_ elsewhere where needed, and test them by @StSav012 in #422QFileDialog get*methods by @Czaki in #433utils.py to _utils.py to make it private by @StSav012 in #431exec() for PySide2 by @StSav012 in #438DeprecationWarning (CI) by @dalthviz in #443QMenu.addAction and QToolBar.addAction compatible with Qt6 arguments' order by @StSav012 in #437Qt.ItemFlags access as Qt.ItemFlag alias (PyQt6) by @dalthviz in #444QDropEvent pos and posF methods by @dalthviz in #445QtWidgets.QFileDialog.Options access as QtWidgets.QFileDialog.Option alias (PyQt6) by @dalthviz in #448QEnum macro for PyQt bindings by @phil65 in #424QFileDialog static methods kwarg compatibility by @dalthviz in #449PyQt extra packages by @dalthviz in #446Full Changelog: v2.3.1...v2.4.0
qtpy specific imports (PR 450 by @wkrasnicki)QFileDialog get* class methods (PR 433 by @Czaki)In this release 8 issues were closed.
QFileDialog static methods kwarg compatibility, by @dalthvizQtWidgets.QFileDialog.Options access as QtWidgets.QFileDialog.Option alias (PyQt6), by @dalthviz (442)PyQt extra packages, by @dalthviz (383)QDropEvent pos and posF methods, by @dalthvizQt.ItemFlags access as Qt.ItemFlag alias (PyQt6), by @dalthvizDeprecationWarning (CI), by @dalthvizexec() for PySide2, by @StSav012QMenu.addAction and QToolBar.addAction compatible with Qt6 arguments' order, by @StSav012QFileDialog get*methods, by @Czaki (432)utils.py to _utils.py to make it private, by @StSav012QEnum macro for PyQt bindings, by @phil65exec_ elsewhere where needed, and test them, by @StSav012QDateTime.toPython and toPyDateTime, etc., by @StSav012path and location of QLibraryInfo, by @StSav012QtGui, QtWidgets and QtOpenGL* related modules, by @DaelonSuzukaIn this release 21 pull requests were closed.
PR: Fix LibraryLocation -> LibraryPath renaming due to deprecation with Qt6 by @StSav012 in https://github.com/spyder-ide/qtpy/pull/393
<details>
LibraryLocation -> LibraryPath renaming due to deprecation with Qt6 by @StSav012 in https://github.com/spyder-ide/qtpy/pull/393QTextStreamManipulator.exec_ on PyQt5/6 by @StSav012 in https://github.com/spyder-ide/qtpy/pull/404QtWidgets and QtGui modules between Qt5 and Qt6 bindings by @StSav012 in https://github.com/spyder-ide/qtpy/pull/410QtBindingsNotFoundError also inherit from ImportError by @cbrnr in https://github.com/spyder-ide/qtpy/pull/413QSinglePointEvent by @StSav012 in https://github.com/spyder-ide/qtpy/pull/417</details>
Full Changelog: https://github.com/spyder-ide/qtpy/compare/v2.3.0...v2.3.1
LibraryLocation -> LibraryPath renaming due to deprecation with Qt6 by @StSav012 in #393QTextStreamManipulator.exec_ on PyQt5/6 by @StSav012 in #404QtWidgets and QtGui modules between Qt5 and Qt6 bindings by @StSav012 in #410QtBindingsNotFoundError also inherit from ImportError by @cbrnr in #413QSinglePointEvent by @StSav012 in #417Full Changelog: v2.3.0...v2.3.1
PySide-5.11a1 only"QTextStreamManipulator has no exec method on PyQt5/6QtWidgets and QtGui modules compatible with PySide6/PyQt6 import locations for PySide2/PyQt5 (PR 410 by @StSav012)In this release 8 issues were closed.
QSinglePointEvent, by @StSav012QtBindingsNotFoundError also inherit from ImportError, by @cbrnr (412)QtWidgets and QtGui modules between Qt5 and Qt6 bindings, by @StSav012QTextStreamManipulator.exec_ on PyQt5/6, by @StSav012LibraryLocation -> LibraryPath renaming due to deprecation with Qt6, by @StSav012In this release 13 pull requests were closed.
PR: Add Qsci to the imports by @dgoeries in https://github.com/spyder-ide/qtpy/pull/372
<details>
Qsci to the imports by @dgoeries in https://github.com/spyder-ide/qtpy/pull/372QtPdf and QtPdfWidgets by @jschueller in https://github.com/spyder-ide/qtpy/pull/382__init__ by @dalthviz / @tgwoodcock in https://github.com/spyder-ide/qtpy/pull/379</details>
Full Changelog: https://github.com/spyder-ide/qtpy/compare/v2.2.1...v2.3.0
Qsci to the imports by @dgoeries in #372QtPdf and QtPdfWidgets by @jschueller in #382__init__ by @dalthviz / @tgwoodcock in #379Full Changelog: v2.2.1...v2.3.0
AttributeError: Cannot reassign members when aliasing enum values (PR 374 by @astrofrog)In this release 6 issues were closed.
QtPdf and QtPdfWidgets, by @jschueller (381)__init__, by @dalthviz (367)Qsci to the imports, by @dgoeries (134)In this release 7 pull requests were closed.
CI: Ensure conda-forge channel usage when testing with conda by @dalthviz in https://github.com/spyder-ide/qtpy/pull/360
<details>
QUndoCommand, provided QLineEdit.getTextMargins() and QFontMetricsF.width() by @random-developer in https://github.com/spyder-ide/qtpy/pull/366self for QtBindingsNotFoundError definition by @dalthviz in https://github.com/spyder-ide/qtpy/pull/368</details>
Full commits list between this release and the previous one: https://github.com/spyder-ide/qtpy/compare/v2.2.0...v2.2.1 Full Changelog: CHANGELOG.md - Version 2.2.0 (2022-08-10)
QUndoCommand, provided QLineEdit.getTextMargins() and QFontMetricsF.width() by @random-developer in #366self for QtBindingsNotFoundError definition by @dalthviz in #368Full commits list between this release and the previous one: v2.2.0...v2.2.1
Full Changelog: CHANGELOG.md - Version 2.2.0 (2022-08-10)
QFontMetricsF.width, QLineEdit.getTextMargins and QtWidgets.QUndoCommand) (PR 366 by @random-developer)In this release 2 issues were closed.
self for QtBindingsNotFoundError definition, by @dalthvizQUndoCommand, provided QLineEdit.getTextMargins() and QFontMetricsF.width(), by @random-developer (365)In this release 6 pull requests were closed.
PR: Add workaround for mode argument in QTextCursor.movePosition (PySide6) by @rear1019 in https://github.com/spyder-ide/qtpy/pull/346
<details>
mode argument in QTextCursor.movePosition (PySide6) by @rear1019 in https://github.com/spyder-ide/qtpy/pull/346WEBENGINE constant in QtWebEngineWidgets by @ccordoba12 in https://github.com/spyder-ide/qtpy/pull/350Methods, helpers and QtPy namespace specifics section to the README by @dalthviz in https://github.com/spyder-ide/qtpy/pull/357</details>
Full commits list between this release and the previous one: https://github.com/spyder-ide/qtpy/compare/v2.1.0...v2.2.0 Full Changelog: CHANGELOG.md - Version 2.2.0 (2022-08-10)
mode argument in QTextCursor.movePosition (PySide6) by @rear1019 in #346WEBENGINE constant in QtWebEngineWidgets by @ccordoba12 in #350Methods, helpers and QtPy namespace specifics section to the README by @dalthviz in #357Full commits list between this release and the previous one: v2.1.0...v2.2.0
Full Changelog: CHANGELOG.md - Version 2.2.0 (2022-08-10)
PySide6.QtSvgWidgets not exposedIn this release 5 issues were closed.
Methods, helpers and QtPy namespace specifics section to the README, by @dalthviz (61)WEBENGINE constant in QtWebEngineWidgets, by @ccordoba12mode argument in QTextCursor.movePosition (PySide6), by @rear1019In this release 7 pull requests were closed.
PR: Restrict broken Pytest versions to those not affected by the Pytest 7.0.0 import-mode=importlib behavior regression by @CAM-Gerlach in https://git
<details>
pyside2uic UIParser.readResources for Python 3.9 compatibility by @n-elie in https://github.com/spyder-ide/qtpy/pull/325QWebEngineScript support for PyQt5/6 and PySide2/6 by @EasyIsrael in https://github.com/spyder-ide/qtpy/pull/326Qt.MidButton on PyQt6 by @dalthviz in https://github.com/spyder-ide/qtpy/pull/328QHeaderView patch related files by @dalthviz in https://github.com/spyder-ide/qtpy/pull/334mode argument in QTextCursor.movePosition (Pyside2) by @rear1019 in https://github.com/spyder-ide/qtpy/pull/341try order to be PyQt5, PySide2, PyQt6, PySide6 by @dalthviz in https://github.com/spyder-ide/qtpy/pull/343</details>
Full commits list between this release and the previous one: https://github.com/spyder-ide/qtpy/compare/v2.0.1...v2.1.0 Full Changelog: CHANGELOG.md - Version 2.1.0 (2022-05-02)
pyside2uic UIParser.readResources for Python 3.9 compatibility by @n-elie in #325QWebEngineScript support for PyQt5/6 and PySide2/6 by @EasyIsrael in #326Qt.MidButton on PyQt6 by @dalthviz in #328QHeaderView patch related files by @dalthviz in #334mode argument in QTextCursor.movePosition (Pyside2) by @rear1019 in #341try order to be PyQt5, PySide2, PyQt6, PySide6 by @dalthviz in #343Full commits list between this release and the previous one: v2.0.1...v2.1.0
Full Changelog: CHANGELOG.md - Version 2.1.0 (2022-05-02)
QT_API environmental variable handling so new processes get the correct value when Qt_API is not initially setQT_API environmental variable is not set i.e PyQt5 - PySide2 - PyQt6 - PySide6try order to follow QtPy v1.x convention (PR 343 by @dalthviz)QHeaderView patch (PR 334 by @dalthviz)QtCore.Qt.MidButton alias for QtCore.Qt.MouseButton.MiddleButton with PyQt6 (PR 328 by @dalthviz)In this release 9 issues were closed.
try order to be PyQt5, PySide2, PyQt6, PySide6, by @dalthviz (342)mode argument in QTextCursor.movePosition (Pyside2), by @rear1019QHeaderView patch related files, by @dalthviz (332)Qt.MidButton on PyQt6, by @dalthviz (327)QWebEngineScript support for PyQt5/6 and PySide2/6, by @EasyIsraelpyside2uic UIParser.readResources for Python 3.9 compatibility, by @n-elieIn this release 14 pull requests were closed.
PR: Set CI job's timeout to 10 min to force a stalled test to terminate by @kumattau in #309
QtGui utility function to QtCore.Qt for PySide bindings by @dalthviz in #313QtCore.Qt by @dalthviz in #314QtCharts alias for backward compatibility with 1.x by @dalthviz in #315Full commits list between this release and the previous one: v2.0.0...v2.0.1
Full Changelog: CHANGELOG.md - Version 2.0.1 (2022-02-02)
<details>
QtGui utility function to QtCore.Qt for PySide bindings by @dalthviz in https://github.com/spyder-ide/qtpy/pull/313QtCore.Qt by @dalthviz in https://github.com/spyder-ide/qtpy/pull/314QtCharts alias for backward compatibility with 1.x by @dalthviz in https://github.com/spyder-ide/qtpy/pull/315</details>
Full commits list between this release and the previous one: https://github.com/spyder-ide/qtpy/compare/v2.0.0...v2.0.1 Full Changelog: CHANGELOG.md - Version 2.0.1 (2022-02-02)
QtCore.Qt.mightBeRichText undefined in PySide (PR 313 by @dalthviz)In this release 6 issues were closed.
QtCharts alias for backward compatibility with 1.x, by @dalthviz (304)QtCore.Qt, by @dalthviz (306)QtGui utility function to QtCore.Qt for PySide bindings, by @dalthviz (311)In this release 9 pull requests were closed.
PR: Use modern packaging instead of deprecated distutils for version parse by @CAM-Gerlach in https://github.com/spyder-ide/qtpy/pull/266
<details>
QtCharts module import and add missing skip validation for QtNetworkAuth test with PyQt6 by @dalthviz in https://github.com/spyder-ide/qtpy/pull/260</details>
Full commits list between this release and the previous one: https://github.com/spyder-ide/qtpy/compare/v1.11.3...v2.0.0 Full Changelog: CHANGELOG.md - Version 2.0.0 (2021-12-22)
QtWidgets.QOpenGLWidget vs QtOpenGLWidgets.QOpenGLWidget (PR 259 by @kumattau)QtTextToSpeechIn this release 17 issues were closed.
QtCharts module import and add missing skip validation for QtNetworkAuth test with PyQt6, by @dalthviz (257)In this release 31 pull requests were closed.
PR: Add warning for deprecated/EoL Qt5 & PyQt5/PySide2 versions to fix #284 by @CAM-Gerlach in https://github.com/spyder-ide/qtpy/pull/289
<details>
PythonQtError when trying to do alias for QtDataVisualization and dev version correction by @dalthviz in https://github.com/spyder-ide/qtpy/pull/281</details>
Full commits list between this release and the previous one: https://github.com/spyder-ide/qtpy/compare/v1.11.2...v1.11.3
Full Changelog: CHANGELOG.md - Version 1.11.3 (2021-12-03)
Qt versions and bindings (at least Qt4: PyQt4 and PySide) (PR 283 by @CAM-Gerlach)In this release 3 issues were closed.
PythonQtError when trying to do alias for QtDataVisualization and dev version correction, by @dalthviz (280)In this release 5 pull requests were closed.
For the full list of closed issues and merged pull requests in this release, please see our Changelog.
For the full list of closed issues and merged pull requests in this release, please see our Changelog.
In this release 1 issue was closed.
In this release 1 pull request was closed.
For the full list of closed issues and merged pull requests in this release, please see our Changelog.
For the full list of closed issues and merged pull requests in this release, please see our Changelog.
In this release 1 issue was closed.
pysideuic and pyside2uic imports since they could be unavailable, by @dalthviz (245)In this release 2 pull requests were closed.
Issue 201 - Missing QWebEngineProfile from QtWebEngineWidgets (PR 242 by @dalthviz)
In this release 1 issue was closed.
QtDataVisualization backward compatibility handling on Windows, by @dalthvizQtWebEngineWidgets.QWebEngineProfile for PyQt5 and PySide2, by @dalthviz (201)In this release 8 pull requests were closed.
For the full list of closed issues and merged pull requests in this release, please see our Changelog.
For the full list of closed issues and merged pull requests in this release, please see our Changelog.
In this release 5 issues were closed.
custom_widgets iteration, by @irrcombat (206)collections.abc module, by @tirkarthiIn this release 8 pull requests were closed.
Add the FORCE_QT_API environment variable to keep using the Qt bindings selected with the QT_API variable and avoid switching to the currently importe
In this release 2 issues were closed.
In this release 2 pull requests were closed.
Add support for several Qt 3D modules.
PR 187 - PR: Avoid deprecated "from collections import MutableMapping"
PR 186 - PR: Generate PyPI long description from README.md
In this release 4 pull requests were closed.
Nothing published for this version
PR 174 - PR: Add support for PySide2.QtOpenGL
Issue 170 - Can't catch PythonQtError (PR 173)
Nothing published for this version
Issue 150 - PySide2-5.11 alpha2 compatibility (PR 151)
In this release 2 issues were closed.
In this release 4 pull requests were closed.
Show a warning when QT_API is changed automatically by qtpy.
In this release 2 issues were closed.
In this release 3 pull requests were closed.
Nothing published for this version
PR 121 - PR: Warn if QHeaderView deprecated methods are used
Issues
In this release 2 issues were closed
Pull requests
In this release 3 pull requests were merged
Nothing published for this version
PR 98 - PR: Don't use Travis to test macOS because it slows down the entire spyder-ide organization
Nothing published for this version
PR 53 - PR: Move tests to module so they can be run when installed
Pull requests
In this release 7 pull requests were merged
PR 44 - Make qtpy to set the QT_API environment variable
Pull requests
In this release 1 pull requests were merged
Nothing published for this version
Add a WEBENGINE constant to QtWebEngineWidgets, which is True if Qt 5 comes with the WebEngine module and False otherwise.
Pull requests
format() over string interpolation operator" issueIn this release 2 pull requests were merged
Issue 18 - QIntValidator left in QtWidgets, should be in QtGui
Add QtWebEngineWidgets module for Qt 5.6. This module replaces the previous QtWebKit one.
Add QtWebEngineWidgets module for Qt 5.6. This module replaces the previous QtWebKit one.
Import the right objects in QtGui, QtWidgets and QtCore
Add a QtPrintSupport module
Nothing published for this version
Add tests and continuous integration
* First release
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →