Свойства сортировки Python, по моему опыту, прекрасно работают с объектами PyQt4. Я не знаю, явно ли они поддерживаются PyQt4 или нет, есть ли какие-то скрытые ошибки, но я никогда не видел, чтобы они плохо себя вели. Вот пример использования PyQt 4.4 и Python 2.5:
from PyQt4.QtCore import QObject
class X( QObject ):
def __init__(self):
self.__x = 10
def get_x(self):
return self.__x
def set_x(self, x):
self.__x = x
x = property(get_x, set_x)
x = X()
print x.x # Should be 10
x.x = 30
print x.x # Should be 30
pyqtProperty
позволяет использовать систему свойств Qt , которая не совпадает с системой Python. Свойства Qt интроспективны из классов C ++ Qt (которые не являются необработанными свойствами Python) и используются Qt для таких вещей, как их Qt Designer редактор форм и Qt Creator IDE. Они допускают много видов самоанализа состояния во время выполнения , которое вы имеете в Python и пропускаете в C ++. В общем, Qt предоставляет некоторые возможности динамических языков для C ++, и это не единственная область, где PyQt предоставляет больше, чем один способ сделать то же самое (рассмотрим также строки, словари, файловый ввод-вывод и т. Д.). С большинством из этих выборов главный совет, который я имею, состоит в том, чтобы просто выбрать одну или другую сторону и придерживаться ее, просто чтобы избежать возможности некоторой неприятной несовместимости. Я склоняюсь к тому, чтобы предпочесть версию Python, а не версию Qt, потому что Python является более ядром в моей работе, чем Qt. Если вы собираетесь переносить что-либо из PyQt обратно в C ++ Qt, вы можете предпочесть версию Qt функции, а не версию Python.