Должен ли я использовать PyQt или PySide для нового проекта Qt?

Разрешения для файловых систем ntfs и vfat должны быть установлены с помощью опций dmask, fmask и umask. dmask контролирует разрешения для каталогов, fmask управляет разрешениями для файлов, а umask управляет обоими. Поскольку эти параметры задают маски, они должны дополнять необходимые разрешения. Например, rwx для владельца и rx для других - 022, а не 755.

Чтобы установить владельца, используйте параметры uid и gid для пользователя и группы соответственно. Вы можете найти свой UID с помощью команды id -u. Чтобы найти свой GID, используйте id -g. Эти значения обычно равны 1000.

Общим набором параметров монтирования для ntfs является uid=1000,gid=1000,dmask=027,fmask=137. Это устанавливает вас как владельца диска и устанавливает разрешения на drwxr-x---.

59
задан 22 May 2012 в 20:47

10 ответов

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения о которых описаны ниже:

Обслуживание

Оба они хорошо поддерживаются. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет возможность доступной коммерческой поддержки (я не знаю, верно ли это для PySide или нет).

[d4 ] Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это значительная разница.

API и версии Python

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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с 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]
63
ответ дан 25 May 2018 в 11:05
  • 1
    Поскольку PySide часто принимает высокоуровневые объекты Python, ваша функция загрузчика пользовательского интерфейса может быть упрощена до чего-то вроде return QtUiTools.QUiLoader().load(uifile), взяв путь к файлу без какого-либо из этого шаблона QFile. – Chris Billington 12 October 2012 в 15:45

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 25 July 2018 в 18:48

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 31 July 2018 в 10:28

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 31 July 2018 в 11:29

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 2 August 2018 в 00:57

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 4 August 2018 в 16:27

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 6 August 2018 в 01:07

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 7 August 2018 в 18:34

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 10 August 2018 в 07:14

Оба PyQt4 и PySide имеют очень похожие сопоставления с Qt API. Существуют, однако, некоторые различия, мои мнения по которым описаны ниже:

Обслуживание

Они оба находятся в хорошем состоянии. PySide выпускает гораздо более регулярные релизы на данный момент: я думаю, что он более тесно связан с Qt, чем PyQt4, и как новый проект имеет более активное сообщество на данный момент. Тем не менее, это просто мое впечатление, и это может быть неправильно.

PyQt4 имеет доступную коммерческую поддержку (я не знаю, верно ли это для PySide или нет).

Лицензия

PyQt4 выпущена либо по коммерческой лицензии, либо по лицензии GPL; PySide выпускается под LGPL. Для коммерческих приложений это существенная разница.

API и версии Python

PyQt4 поддерживает два разных API. Версия API 1 по умолчанию для приложений python 2.x, а версия API 2 по умолчанию - для приложений python 3.x.

PySide поддерживает только один API, что примерно эквивалентно API-интерфейсу PyQt4 версии 2. API версия 2 (или API PySide) работает гораздо лучше, чем с API версии 1 PyQt4. В 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 , Я думаю, что вполне вероятно, что эти библиотеки будут обновлены для поддержки обоих к настоящему времени, но я не проверял.

Создание кода работает с PyQt4 или PySide

. Предполагая, re, используя 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]
63
ответ дан 15 August 2018 в 19:14
  • 1
    Поскольку PySide часто принимает высокоуровневые объекты Python, ваша функция загрузчика пользовательского интерфейса может быть упрощена до чего-то вроде return QtUiTools.QUiLoader().load(uifile), взяв путь к файлу без какого-либо из этого шаблона QFile. – Chris Billington 12 October 2012 в 15:45

Другие вопросы по тегам:

Похожие вопросы: