Форум сайта python.su
привет,
имеется код который успешно генерит таблицу в линуксе (там же и писался). Решил поробовать под виндой: скрипт спотыкается на таком куске кода:
def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
if role != QtCore.Qt.DisplayRole:
return QtCore.QVariant()
if orientation == QtCore.Qt.Horizontal:
if section == NAME:
return QtCore.QVariant(“Name”)
elif section == OWNER:
return QtCore.QVariant(“Owner”)
elif section == COUNTRY:
return QtCore.QVariant(“Country”)
elif section == DESCRIPTION:
return QtCore.QVariant(“Description”)
elif section == TEU:
return QtCore.QVariant(“TEU”)
return QtCore.QVariant(int(section + 1))
и “сыпет” такими коментами (в основном ругаясь на вторую строку, но периодически на все остальные, с началом “return”):
TypeError: PyQt4.QtCore.Qvariant represents a mapped type and cannot be instantiated
пробовал на разных машинах - результат тот же: на линухе все ок, на винде - проблемс. Различия в версиях: на линухе 4.5, в винде - 4.7.1
может к винде код нужно подготовить как-то?
google не помог… :(
спасибо,
-вадим
Офлайн
У вас используется разная версия API для класса QVariant. Вот: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html#id11
Как менять версию API читайте тут: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html#selecting-incompatible-apis
Выберите одно из двух, если не планируете использовать PyQt4 ниже версии 4.5, то юзайте вторую версию API для класса QVariant. В этом случае вы не создаёте QVariant явно, а просто передаёте питоновские типы данных. Т.е. вместо return QVariant('Name') вы делаете просто return ‘Name’.
Офлайн