Для тех кто пишет расширения на 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
🇷🇺
Подбитая/Уничтоженная бронетехника ВС РФ в селе Александровка Херсонская Область
На фото : 2 Т-90А/М, 4 БМП-3, 3 Тигр-М
🇬🇧
Damaged/Destroyed armored vehicles of the Russian Armed Forces in the village of Oleksandrivka, Kherson Oblast.
Pictured: 2 T-90A/M, 4 BMP-3, 3 Tigr-M
#потеривсрф#всрф#херсонскаяобласть
#srflosses#vsrf#khersonregion
@WarUAPravda
🇷🇺🛩🇺🇦Cesta smrti pre ukrajinských bojovníkov v oblasti okupovanej Konštantynovky🔥🐷
🎥Zábery z dronu nepriateľa, ktorý ukazuje zničené zásahmi ruských FPV dronov rôzne vzorky obrnených vozidiel a áut nepriateľa💥
📱|U_G_M|
#Konštantynovka#OSU#Technika#Auto#VSRF#SVO
🌐Zdroj:@Ukr_G_M
🔗Link:https://t.me/Ukr_G_M/77109
https://t.me/casusbellilive
Truth over narrative 24/7
WEB | CONTACT | SHOP
📅Vytvorené: 2026-03-19 08:19:05
🇷🇺
Подбитая/Брошенная/Уничтоженная бронетехника ВС РФ под селом Русанов на киевском направлении
На фото : 2 Захваченых БМП-2, 5 Подбитых/Уничтоженных БМП-2,3 Т-72Б3, 1 МТ-ЛБ
🇬🇧
Damaged/Abandoned/Destroyed Russian Armed Forces armored vehicles near the village of Rusanov on the Kyiv front.
Pictured: 2 captured BMP-2s, 5 damaged/destroyed BMP-2s, 3 T-72B3s, 1 MT-LB
#потеривсрф#киевскоенаправление#бронетехника#трофеи#всрф
#srflosses#kyivdirection#armoredvehicles#trophies#vsrf
@WarUAPravda