[PATCH v2] py: cam: Convert to PyQt6

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Tue Aug 13 10:08:48 CEST 2024


Hi David,

On 13/08/2024 11:05, David Plowman wrote:
> 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."

I hear you, but this is only about the cam.py example application in 
libcamera's source tree, and only the qt and qtgl renderers of that example.

I don't think that example app is distributed anywhere, or, if I had to 
guess, even used by anyone.

  Tomi

> 
> 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