Подтвердить что ты не робот

ImportError: невозможно импортировать имя "QStringList" в PyQt5

Я использую PyQt5, но не могу импортировать QStringList. Я знаю, что QStringList был в модуле QtCore в PyQt4. Поэтому я пытаюсь импортировать класс, используя

from PyQt5.QtCore import QStringList

но это показывает эту ошибку

C:\Python34\python.exe C:/Users/User/PycharmProjects/FirstProject/Test.py
Traceback (most recent call last):
File "C:/Users/User/PycharmProjects/FirstProject/Test.py", line 3, in <module>
from PyQt5.QtCore import QStringList
ImportError: cannot import name 'QStringList'

Я использую PyCharm, и он показывает в автозаполнении нечто, называемое QStringListModel. Я следил за книгой Марка Саммерфилда "Быстрая разработка графического интерфейса на Python и Qt". Как мне использовать QStringList или что-нибудь еще в PyQt5, которое будет выполнять работу QStringList?

4b9b3361

Ответ 1

В PyQt5 нет QString и, следовательно, нет необходимости в QStringList.

Любой API Qt, который обычно возвращает QString, будет автоматически возвращать строку Python. Аналогично, любые API Qt, которые обычно возвращают QStringList, возвращают список Python, содержащий строки Python. И наоборот: любой API Qt, который обычно принимает QString или QStringList, вместо этого принимает эквиваленты Python.

Это то же самое, что и поведение по умолчанию при использовании PyQt4 с Python 3 или при явной настройке API на версию 2, используя sip.setapi.

Подробнее см. Различия между PyQt4 и PyQt5 в PyQt5 Reference.

Ответ 2

Поскольку я не мог найти решение этой проблемы, я нашел обходной путь для своих нужд. Я запускаю свой скрипт на python из сценария оболочки и использую grep, чтобы игнорировать сообщение об ошибке. Я надеюсь, что это помогает другим. ~/run/r_entry.py 2>&1| grep -v FIFinderSyncExtensionHost