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?
Ответы
Ответ 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