Для тех кто пишет расширения на 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
🔴 MEETING EXCEPTIONNEL À LILLE !
Jean-Luc Mélenchon sera à #Lille ce jeudi au grand palais à 19h pour soutenir la liste insoumise, et surtout écologiste et populaire !
✊ Dimanche, nous pouvons l’emporter ! Soyons nombreux et nombreuses !
Ma publication à retrouver sur :
👉Twitter
👉Instagram
👉Facebook
👉Tik tok
➡️ Rejoignez le canal telegram : https://t.me/Lahouaria_Addouche
⚽️🇪🇺Champions
Lille 1-0 Real Madrid#Champions#Lille#RealMadrid
El Real Madrid cayó por primera vez en la temporada y segunda en el año. Desde el 18 de enero, en aquella noche copera del Metropolitano. Puede que el derbi dejase tocado al equipo de Ancelotti, que al menos en los últimos minutos pudo igualar un partido plano. Tres paradas de reflejos de Chevalier evitaron que el Madrid igualara en una reacción muy tardía. El Lille aprovechó los desajustes blancos y conquistó una victoria de enorme prestigio.
https://www.marca.com/futbol/champions-league/cronica/2024/10/02/66fda5bcca4741d9138b4572.html
🏆@Info288_deportes
⚽️🇪🇺Champions
Atlético 1-3 Lille#Champions#Atlético#Lille
El Atlético de Madrid ha perdido este miércoles por 1-3 frente al LOSC Lille en la jornada 3 de la fase de liga en la Champions League, a causa sobre todo de un polémico penalti encajado a cuarto de hora de la conclusión, en un partido disputado en el Riyadh Air Metropolitano y tras el cual los colchoneros se han complicado su futuro inmediato en este torneo.
https://www.europapress.es/deportes/futbol-00162/noticia-atletico-madrid-pierde-lille-complica-futuro-champions-league-20241023230223.html
🏆@Info288_deportes
Lille y Stade Brestois se clasificaron a la próxima edición de la UCL🇪🇺
El Lille llegaron hasta los octavos de final de la UCL en la temporada 21/22.
Mientras que el Brest jugará por primera la UCL en su historia tras una increíble temporada en la Ligue 1
@Fut_planet⚜️#UCL🇪🇺#Lille🇫🇷
#Brest🇫🇷
France Ligue 1🇫🇷
2026-05-03 13:00 UTC
Lille vs. Le Havre
Predicted outcome: Lille❌
Predicted score: 1:0
Actual: Draw 1:1
#Lille#LEHavre
2026-05-03 15:15 UTC
Strasbourg vs. Toulouse
Predicted outcome: Strasbourg❌
Predicted score: 2:1
Actual: Toulouse 1:2
#Strasbourg#Toulouse
2026-05-03 15:15 UTC
Auxerre vs. Angers
Predicted outcome: Auxerre✅
Predicted score: 2:1
Actual: Auxerre 3:1
#Auxerre#Angers
2026-05-03 15:15 UTC
Paris FC vs. Stade Brestois 29
Predicted outcome: Paris FC✅
Predicted score: 2:1
Actual: Paris FC 4:0
#ParisFC#StadeBrestois29
2026-05-03 18:45 UTC
Lyon vs. Rennes
Predicted outcome: Lyon✅
Predicted score: 3:2
Actual: Lyon 4:2
#Lyon#Rennes
#Football#FranceLigue1