[PATCH v2] py: cam: Convert to PyQt6

David Plowman david.plowman at raspberrypi.com
Tue Aug 13 10:05:03 CEST 2024


Hi everyone

Could I just put in a vote for maintaining backward compatibility with
PyQt5 for the time being? By all means deprecate it, put in a warning,
but please don't break it _yet_. There are many platforms still
running PyQt5 (the latest Raspberry Pi OS based on Debian Bookworm has
PyQt5), and we've found many people have had problems upgrading PyQt
versions and then discovering OpenCV gets upset and doesn't work any
more. We ship versions in apt that we guarantee work properly
together, and I wouldn't like to tell people "sorry, you've got to
find versions for yourself that play nicely, or build everything
yourself from source. Only building some of this stuff can be
non-trivial. Good luck."

Thanks

David

On Mon, 12 Aug 2024 at 18:27, Tomi Valkeinen
<tomi.valkeinen at ideasonboard.com> wrote:
>
> Qt5 is now end of life. The libcamera 'qcam' application has removed
> support for Qt5, and updated to Qt6.
>
> Update the python 'cam' application accordingly to Qt6.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> v2:
> - Added RB tags
> - Updated the commit description
>
>  src/py/cam/cam_qt.py   |  6 +++---
>  src/py/cam/cam_qtgl.py | 12 ++++++------
>  2 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/src/py/cam/cam_qt.py b/src/py/cam/cam_qt.py
> index c1723b44..22d8c4da 100644
> --- a/src/py/cam/cam_qt.py
> +++ b/src/py/cam/cam_qt.py
> @@ -2,7 +2,7 @@
>  # Copyright (C) 2022, Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
>
>  from helpers import mfb_to_rgb
> -from PyQt5 import QtCore, QtGui, QtWidgets
> +from PyQt6 import QtCore, QtGui, QtWidgets
>  import libcamera as libcam
>  import libcamera.utils
>  import sys
> @@ -63,10 +63,10 @@ class QtRenderer:
>          self.buf_mmap_map = buf_mmap_map
>
>      def run(self):
> -        camnotif = QtCore.QSocketNotifier(self.cm.event_fd, QtCore.QSocketNotifier.Read)
> +        camnotif = QtCore.QSocketNotifier(self.cm.event_fd, QtCore.QSocketNotifier.Type.Read)
>          camnotif.activated.connect(lambda _: self.readcam())
>
> -        keynotif = QtCore.QSocketNotifier(sys.stdin.fileno(), QtCore.QSocketNotifier.Read)
> +        keynotif = QtCore.QSocketNotifier(sys.stdin.fileno(), QtCore.QSocketNotifier.Type.Read)
>          keynotif.activated.connect(lambda _: self.readkey())
>
>          print('Capturing...')
> diff --git a/src/py/cam/cam_qtgl.py b/src/py/cam/cam_qtgl.py
> index 6cfbd347..35b4b06b 100644
> --- a/src/py/cam/cam_qtgl.py
> +++ b/src/py/cam/cam_qtgl.py
> @@ -1,8 +1,8 @@
>  # SPDX-License-Identifier: GPL-2.0-or-later
>  # Copyright (C) 2022, Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
>
> -from PyQt5 import QtCore, QtWidgets
> -from PyQt5.QtCore import Qt
> +from PyQt6 import QtCore, QtWidgets
> +from PyQt6.QtCore import Qt
>
>  import math
>  import os
> @@ -142,10 +142,10 @@ class QtRenderer:
>          self.window = window
>
>      def run(self):
> -        camnotif = QtCore.QSocketNotifier(self.state.cm.event_fd, QtCore.QSocketNotifier.Read)
> +        camnotif = QtCore.QSocketNotifier(self.state.cm.event_fd, QtCore.QSocketNotifier.Type.Read)
>          camnotif.activated.connect(lambda _: self.readcam())
>
> -        keynotif = QtCore.QSocketNotifier(sys.stdin.fileno(), QtCore.QSocketNotifier.Read)
> +        keynotif = QtCore.QSocketNotifier(sys.stdin.fileno(), QtCore.QSocketNotifier.Type.Read)
>          keynotif.activated.connect(lambda _: self.readkey())
>
>          print('Capturing...')
> @@ -175,8 +175,8 @@ class MainWindow(QtWidgets.QWidget):
>      def __init__(self, state):
>          super().__init__()
>
> -        self.setAttribute(Qt.WA_PaintOnScreen)
> -        self.setAttribute(Qt.WA_NativeWindow)
> +        self.setAttribute(Qt.WidgetAttribute.WA_PaintOnScreen)
> +        self.setAttribute(Qt.WidgetAttribute.WA_NativeWindow)
>
>          self.state = state
>
> --
> 2.43.0
>


More information about the libcamera-devel mailing list