Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for PySide6 #5161

Merged
merged 2 commits into from Jan 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 3 additions & 1 deletion Tests/test_imageqt.py
Expand Up @@ -14,7 +14,9 @@ def test_rgb():
# typedef QRgb
# An ARGB quadruplet on the format #AARRGGBB,
# equivalent to an unsigned int.
if ImageQt.qt_version == "5":
if ImageQt.qt_version == "side6":
from PySide6.QtGui import qRgb
elif ImageQt.qt_version == "5":
from PyQt5.QtGui import qRgb
elif ImageQt.qt_version == "side2":
from PySide2.QtGui import qRgb
Expand Down
8 changes: 4 additions & 4 deletions Tests/test_qt_image_qapplication.py
Expand Up @@ -7,11 +7,11 @@
if ImageQt.qt_is_installed:
from PIL.ImageQt import QPixmap

if ImageQt.qt_version == "5":
from PyQt5 import QtGui
if ImageQt.qt_version == "side6":
from PySide6.QtWidgets import QApplication, QHBoxLayout, QLabel, QWidget
elif ImageQt.qt_version == "5":
from PyQt5.QtWidgets import QApplication, QHBoxLayout, QLabel, QWidget
elif ImageQt.qt_version == "side2":
from PySide2 import QtGui
from PySide2.QtWidgets import QApplication, QHBoxLayout, QLabel, QWidget

class Example(QWidget):
Expand All @@ -22,7 +22,7 @@ def __init__(self):

qimage = ImageQt.ImageQt(img)

pixmap1 = QtGui.QPixmap.fromImage(qimage)
pixmap1 = ImageQt.QPixmap.fromImage(qimage)

QHBoxLayout(self) # hbox

Expand Down
11 changes: 9 additions & 2 deletions src/PIL/ImageQt.py
Expand Up @@ -22,13 +22,20 @@
from . import Image
from ._util import isPath

qt_versions = [["5", "PyQt5"], ["side2", "PySide2"]]
qt_versions = [
["side6", "PySide6"],
["5", "PyQt5"],
["side2", "PySide2"],
]

# If a version has already been imported, attempt it first
qt_versions.sort(key=lambda qt_version: qt_version[1] in sys.modules, reverse=True)
for qt_version, qt_module in qt_versions:
try:
if qt_module == "PyQt5":
if qt_module == "PySide6":
from PySide6.QtCore import QBuffer, QIODevice
from PySide6.QtGui import QImage, QPixmap, qRgba
elif qt_module == "PyQt5":
from PyQt5.QtCore import QBuffer, QIODevice
from PyQt5.QtGui import QImage, QPixmap, qRgba
elif qt_module == "PySide2":
Expand Down