Предупреждение об устаревании в Python, имеет ли здесь смысл? - PullRequest
2 голосов
/ 19 марта 2020

Я пишу приложение Python (используя версию 3.8.2) для моего проекта. В приложении я использую PySide2 для создания QTableWidget объекта с именем items_tableWidget . Вот фрагмент моего кода, который создает QTableWidgetItem объекты, заполняет их моими данными, делает их недоступными для редактирования пользователем и помещает их в таблицу:

cell = QtWidgets.QTableWidgetItem()
cell.setData(Qt.DisplayRole, data)
cell.setFlags(cell.flags() & ~Qt.ItemIsEditable)
ui.items_tableWidget.setItem(row_number, column_number, cell)

Я получаю это предупреждение при выполнении кода:

C:\Users\Deronek\Documents\Qt\SkyblockBazaar\main.py:346: DeprecationWarning: an integer is required (got type PySide2.QtCore.Qt.ItemFlags).  Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
  cell.setFlags(cell.flags() & ~Qt.ItemIsEditable)

Я новичок ie до Python, но я думаю, что это предупреждение не имеет смысла, потому что аргумент setFlags , а также flags () возвращаемое значение и ItemIsEditable перечислимое значение имеют все определенные типы и операторы в пространстве имен Qt, поэтому я не выполняю преобразование импликов. Я прав или я что-то упускаю?

Спасибо за ваши ответы.

1 Ответ

2 голосов
/ 19 марта 2020

В Python 3.8 произошли следующие изменения :

Конструкторы int, float и complex теперь будут использовать специальный метод __index __ (), если он доступен, и соответствующий метод __int __ (), __float __ () или __complex __ () недоступен. (Внесено Сергеем Сторчака в bpo-20092.)

И PySide2 использует целочисленные значения для отображения перечислений, и об этом уже сообщалось PYSIDE-1226 . И, как они отмечают в комментариях к следующему выпуску, это предупреждение больше не будет выпускаться.

В общем, у вас не должно быть проблем, а просто получите это раздражающее предупреждение.

...