[PySide] PySide6 true_property
Paolo De Stefani
paolo at paolodestefani.it
Tue Aug 10 09:17:34 CEST 2021
Il 09/08/2021 20:24 Cristián Maureira-Fredes ha scritto:
> On 8/9/21 5:07 PM, paolo at paolodestefani.it wrote:
>> Hello list
>> I'm new to pyside but i played a lot with pyqt5 in the last few years.
>> I'm trying to port to pyside6 a simple application using snake_case
>> and true_property new options
>>
>> But I immediately got stuck in this simple problem: how to set the
>> geometry of a widget ?
>> Before i used widget.setGeometry(10, 10, 50, 50) but how to do this
>> with true_property ?
>>
>> from PySide6.QtWidgets import QApplication, QWidget
>> from PySide6 import QtCore
>> from __feature__ import true_property
>> app = QApplication([])
>> w = QWidget()
>> w.geometry = 10, 10, 50, 50
>> Traceback (most recent call last):
>> Python Shell, prompt 6, line 1
>> builtins.TypeError: 'PySide6.QtWidgets.QWidget.geometry.fset' called
>> with wrong argument types:
>> PySide6.QtWidgets.QWidget.geometry.fset(tuple)
>> Supported signatures:
>> PySide6.QtWidgets.QWidget.geometry.fset(PySide6.QtCore.QRect)
>> PySide6.QtWidgets.QWidget.geometry.fset(int, int, int, int)
>>
>> How can i use the second sopported signature if not passing a tuple ?
>>
>> -- Paolo De Stefani
>
>
> Hey Paolo,
>
> the issue lies on the nature of the setGeometry(x, y, w, h) function,
> since it's just an overload that inside the code calls:
> setGeometry(QtCore.QRect(x, y, w, h)), so it was designed
> just for convenience.
>
> The 'geometry' property *is* a QRect element,
> so that's why one cannot assign a tuple, but a QRect object,
> so for your specific case, you need to replace
>
>>>> w.geometry = 10, 10, 50, 50
>
> by
>
>>>> w.geometry = QtCore.QRect(10, 10, 50, 50)
>
> It doesn't sound too convenient,
> but sadly it's the origin of the property itself,
> which depends on a QRect element.
>
> If you believe that accepting a tuple as a value
> for the 'geometry' property is a valid use case,
> that has even some positive effect in other sides
> of PySide, feel free to open an issue on JIRA
> https://bugreports.qt.io/projects/PYSIDE
> so we can discuss on how difficult would it be
> to implement and adapt the current bindings
> for that use case.
>
> Cheers!
>
> --
> Dr. Cristián Maureira-Fredes
> R&D Manager
>
> The Qt Company GmbH
> Erich-Thilo-Str. 10
> D-12489 Berlin
>
> Geschäftsführer: Mika Pälsi,
> Juha Varelius, Jouni Lintunen
> Sitz der Gesellschaft: Berlin,
> Registergericht: Amtsgericht
> Charlottenburg, HRB 144331 B
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> https://lists.qt-project.org/listinfo/pyside
For me it's ok to use QRect()
I know that probably the mesages are automatically generated BUT it may
be useful to omit in the error message the unavailable signature:
PySide6.QtWidgets.QWidget.geometry.fset(int, int, int, int)
--
Paolo De Stefani
More information about the PySide
mailing list