Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения о которых описаны ниже:
Оба они хорошо поддерживаются. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.
PyQt4 имеет возможность доступной коммерческой поддержки (я не знаю, верно ли это для PySide или нет).
[d4 ] ЛицензияPyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это значительная разница.
PyQt4 поддерживает два разных API. API версии 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.
PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) - это GPL лучше работать с чем API-интерфейс PyQt4 версии 1. В API версии 1 у вас много кода, который передает строки python в QtCore.QString s и обратно. В API версии 2 (и PySide) вы просто используете строки python. Ниже приведен простой способ переключения между PyQt4 и PySide, если вы хотите играть с ними.
Большинство написанных мной кодов, похоже, одинаково хорошо работают в PyQt4 и PySide. Исторически я всегда использовал PyQt4 для графических интерфейсов python, но большинство новых вещей, которые я пишу сейчас, использует PySide (в основном из-за более гибкого лицензирования). Я бы посоветовал вам попробовать оба и посмотреть, как вы их найдете. Если вы используете QtVariant.py (ниже), переключение между ними тривиально, и когда вы принимаете решение, будет только один файл, который нуждается в обновлении.
Документация для обоих PyQt4 и PySide автоматически генерируются из основной документации Qt. На мой взгляд, документация PySide является лучшим представлением того, что вы на самом деле используете, но на практике я обычно использую Qt-документацию (довольно легко мысленно перевести документацию на C ++ на python).
Если вы используете внешние библиотеки, некоторые еще не работают с PySide. Мало что вам нужно работать с PySide, если честно, но пару лет назад я написал код, который использовал скрученный (с реактором Qt) и matplotlib, и это заставило меня отказаться от использования PyQt4, а не PySide , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.
Предполагая, используя python 2.x, вы можете довольно легко сделать свой код совместимым с PySide и PyQt4, сделав QtVariant.py и используя:
from QtVariant import QtGui, QtCore
или что угодно. Используемый мной QtVariant.py выглядит так:
import sys
import os
default_variant = 'PySide'
env_api = os.environ.get('QT_API', 'pyqt')
if '--pyside' in sys.argv:
variant = 'PySide'
elif '--pyqt4' in sys.argv:
variant = 'PyQt4'
elif env_api == 'pyside':
variant = 'PySide'
elif env_api == 'pyqt':
variant = 'PyQt4'
else:
variant = default_variant
if variant == 'PySide':
from PySide import QtGui, QtCore
# This will be passed on to new versions of matplotlib
os.environ['QT_API'] = 'pyside'
def QtLoadUI(uifile):
from PySide import QtUiTools
loader = QtUiTools.QUiLoader()
uif = QtCore.QFile(uifile)
uif.open(QtCore.QFile.ReadOnly)
result = loader.load(uif)
uif.close()
return result
elif variant == 'PyQt4':
import sip
api2_classes = [
'QData', 'QDateTime', 'QString', 'QTextStream',
'QTime', 'QUrl', 'QVariant',
]
for cl in api2_classes:
sip.setapi(cl, 2)
from PyQt4 import QtGui, QtCore
QtCore.Signal = QtCore.pyqtSignal
QtCore.QString = str
os.environ['QT_API'] = 'pyqt'
def QtLoadUI(uifile):
from PyQt4 import uic
return uic.loadUi(uifile)
else:
raise ImportError("Python Variant not specified")
__all__ = [QtGui, QtCore, QtLoadUI, variant]
Вы должны использовать Ctrl + Shift + V для вставки в терминал. Копия похожа; используйте Ctrl + Shift + C для копирования из терминала.
Комментарий Арильда объясняет (немного отредактирован):
Следуя традиции, некоторые Ctrl + (буква) ярлыки отображаются для ввода управляющих символов в терминале (см. раздел «Как управляющие символы сопоставляются с клавиатурами в Википедии»). Вот почему мы не можем использовать их для копирования и вставки. Ярлыки можно переопределить в меню «Редактирование»> «Горячие клавиши», но особенно рекомендуется Ctrl + C, чтобы сохранить назначенный управляющий символ ETX, который используется для прерывания текущей команды.Ctrl + Insert для 'copy', Shift + Delete для 'cut' и Shift + Insert для 'paste' также работает в большинстве мест, включая терминал GNOME.
Как и другие, Copy - CTRL + SHIFT + C, а вставка - CTRL + SHIFT + V, в отличие от обычного текстового поля.
Итак, просто добавьте переход ко многим другим редактированию текста (! d10)
Копировать: CTRL + SHIFT + SHIFT [ ! d11]
Вставить: SHIFT + SHIFT + C
Найти: SHIFT + SHIFT + F
Закрыть окно терминала: SHIFT + SHIFT + F
Закрыть все окна терминала: SHIFT + SHIFT + Q
и т. Д.