(PySide6) (Qt 6) ошибка QItemSelection excepted at least 1 argument, got 0 (баг?)

amakeloan

Новичок
Пользователь
Апр 25, 2021
6
1
0
1
Bash:
[user@host ~]$ python3 -c 'from PyQt6 import QtCore; print(QtCore.QItemSelection())'
<PyQt6.QtCore.QItemSelection object at 0x7f57868f5ac0>
[user@host ~]$ python3 -c 'from PySide6 import QtCore; print(QtCore.QItemSelection())'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: QItemSelection expected at least 1 argument, got 0
Решил я обновиться на Qt 6 (и выбрал PySide6), и столкнулся с маленькой проблемой.
Не хочет создаваться пустой QItemSelection. Аргументы ему, видите ли, подавай.
Хотя если верить документации https://doc.qt.io/qtforpython/PySide6/QtCore/QItemSelection.html#detailed-description (и если я ничего не напутал) - то должен создаваться пустой и не жаловаться.
An empty item selection can be constructed, and later populated as required. So, if the model is going to be unavailable when we construct the item selection, we can rewrite the above code in the following way:
Python:
selection = QItemSelection()
...
selection.select(topLeft, bottomRight)
Что я делаю не так?

p.s. Версия Qt - 6.1.2
ось - Arch Linux
Python 3.9.6
Bash:
$ pip list | grep -iE 'pyside6|pyqt6'
PyQt6             6.1.1
PyQt6-sip         13.1.0
PySide6           6.1.2
p.p.s. Интересует именно PySide6. Использовать PyQt6 - не вариант.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Попробовал запустить ваш код:
Bash:
python3 -c 'from PySide6 import QtCore; print(QtCore.QItemSelection())'
и получил ту же ошибку.
Если передать в QtCore.QItemSelection() аргумент, например None тоже возникает ошибка, но в ней указываются допустимые типы аргументов:
Bash:
...
Supported signatures:
    PySide6.QtCore.QItemSelection__init__(QtCore.QItemSelection)
    PySide6.QtCore.QItemSelection__init__(Union[QtCore.QModelIndex, QtCore.QPersistentModelIndex],
                                          Union[QtCore.QModelIndex, QPersistentModelIndex])
Видимо с 6й версии создавать QItemSelection без аргументов нельзя.
Вот так можно создать с аргументами:
Bash:
python3 -c 'from PySide6 import QtCore; print(QtCore.QItemSelection(QtCore.QModelIndex(), QtCore.QModelIndex()))'
 

amakeloan

Новичок
Пользователь
Апр 25, 2021
6
1
0
1
Ну кьютовцы в своем репертуаре.
Код мы обновим, а документацию не будем. А зачем? :)

Вот так можно создать с аргументами:
Bash:
python3 -c 'from PySide6 import QtCore; print(QtCore.QItemSelection(QtCore.QModelIndex(), QtCore.QModelIndex()))'
Спасибо, работает.
 

Форум IT Специалистов