Для тех кто пишет расширения на PyQt/PySide для CG-софтов.
Когда я только начинал писать тулзы под Maya (тогда еще версия 2010-2011) мне приходилось ручками ставить PyQt4 под Maya. Даже написал мануалы по установке на своём сайте. Но потом стал доступен из коробки PySide и позже он обновится до PySide2. Для некоторых систем была поддержка PyQt5.
И как простому разработчику поддерживать этот зоопарк? Ведь хочется чтобы тул работал на любой версии (вы тоже делали модуль что-то типа import_qt.py?😁)
На помощь приходит проект Qt.py который поставил себе цель унифицировать использование Qt-биндингов вне зависимости от среды где запускается код. Те, кто давно пишут на Qt, скорее всего знают этот проект.
Он стал стандартом для CG-индустрии и используется в топовых студиях и проектах.
Qt․py помогает запускать один и тот же код на разных платформах с разными вариантами Qt-библиотек. Это может быть как интеграция в CG-софт, так и переносимость стендалонов между разными платформами с разными версиями Python.
Я решил рассказать о некоторых особенностях работы с этой библиотекой.
Сегодня о том, как установить и использовать Qt․py и что это вам даёт.
Установка
pip install Qt.py
Чтобы начать использовать Qt․py в коде достаточно заменить импорт вашего варианта Qt-биндинга на Qt․py
from [PySide|PyQt4|PySide2|PyQt5] import QtWidgets
=>
from Qt import QtWidgets
Теперь ваш код будет поддерживать любой вариант биндинга Qt в Python.
При этом не потребуется использовать if-else конструкции под разные версии. Все вызовы теперь одинаковы.
Всё что нужно сделать, это написать его по правилам PySide2. Именно эта версия была взята за основу.
Приоритет импорта такой:
1. PySide2
2. PyQt5
3. PySide
4. PyQt4
Что именно загрузилось можно посмотреть в переменной __binding__
>>> import Qt
>>> Qt.__binding__
'PySide2'
Приоритет имопрта можно изменить через переменные QT_PREFERRED_BINDING и QT_PREFERRED_BINDING_JSON. Причем под каждый проект оверрайды можно настраивать индивидеально.
#qt#libs
🇻🇪🔥🇺🇸Venezuela denuncia injerencia de EE.UU. y respalda a Irán
⚡️Caracas condenó las recientes declaraciones de Estados Unidos contra Irán, acusando a Washington de recurrir nuevamente a la confrontación como herramienta de política exterior.
🗣El Gobierno venezolano advirtió que el lenguaje de fuerza promovido por EE.UU. no solo se aparta del derecho internacional, sino que representa una amenaza directa para la paz global, reiterando su solidaridad con el pueblo iraní frente a cualquier intento de intervención externa.
#NoALaInjerencia#SolidaridadInternacional
#DerechoInternacional#CartaDeLaONU
#EEUUAmenaza#Irán#Venezuela
#PazMundial
🇺🇸❌ Maduro acusa a EE.UU. de destruir el orden internacional creado tras la Segunda Guerra Mundial
⚡️El presidente Nicolás Maduro denunció que la política exterior de Estados Unidos viola de forma descarada los principios del derecho internacional consagrados en la Carta de la ONU.
🗣Según el jefe de Estado, Washington ha optado por sustituir la diplomacia por la amenaza permanente y el chantaje militar, desconociendo las normas que prohíben el uso de la fuerza entre Estados soberanos y poniendo en riesgo la paz global.
#DerechoInternacional#CartaDeLaONU
#NoALaGuerra#EEUUAmenaza
#VenezuelaSoberana#PazMundial
#Multilateralismo
🔥🌍 Yván Gil: el silencio ante EE.UU. nos acerca a una guerra mundial
⚡️El canciller venezolano aseguró que la escalada militar estadounidense en el Caribe representa un ataque directo a la paz mundial y al sistema multilateral construido tras la Segunda Guerra Mundial.
🗣“No estamos enfrentando una agresión contra Venezuela, estamos enfrentando una agresión contra el derecho internacional y la Carta de la ONU”, sentenció Gil, advirtiendo que callar ante este peligro podría llevar a la humanidad a las puertas de un nuevo holocausto y una nueva guerra mundial.
#ZonaDePaz#NoALaGuerra#EEUUAmenaza
#DerechoInternacional#CartaDeLaONU
#VenezuelaSoberana#CaribeZonaDePaz
#PazMundial
❌🌍 Benín denuncia ataque de EE.UU. contra Venezuela como ilegal
⚡️Benín expresó su solidaridad con Venezuela y condenó el bombardeo estadounidense, señalando que se trata de una acción contraria al derecho internacional y a la Carta de la ONU.
🗣La declaración refuerza las denuncias sobre el uso unilateral de la fuerza por parte de Washington, que ignora los mecanismos multilaterales y actúa al margen de la legalidad internacional.
#BeninConVenezuela#NoALaAgresión
#DerechoInternacional#CartaDeLaONU
#Soberanía#PazMundial
#EEUUAmenaza#SolidaridadInternacional
🚨🇺🇸Bloqueo armado = crimen internacional
❗️La ONU desmontó la narrativa de EE.UU.: no existe derecho alguno para imponer sanciones mediante un bloqueo militar. Washington está violando abiertamente la Carta de la ONU, el derecho internacional y los principios básicos de derechos humanos.
El despliegue militar en el Caribe y la confiscación de petroleros no buscan “seguridad”, buscan asfixiar a un país soberano y apropiarse de sus recursos. Es piratería moderna con bandera estadounidense.
#BloqueoEsGuerra#EEUUAmenaza#NoAlBloqueo
#DerechoInternacional#CrimenDeAgresión
#VenezuelaSoberana#PirateríaModerna
#CartaDeLaONU#DerechosHumanos