Для тех кто пишет расширения на 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
Una alegría convertida en tristeza: una pareja y su hijo fueron rescatados de entre los escombros casi 300 horas después de ocurrido el terremoto que devastó Turquía. El niño lamentablemente falleció en el hospital. #DW
«Считается, что размер армии КНДР в районе 1,2 миллиона человек. Срочная служба обязательна для мужчин и женщин. Для мужчин — около десяти лет», — объясняет в интервью#DW востоковед и кореевед Андрей Ланьков. При этом примерно половина армии Северной Кореи — стройбат и военизированные отряды сельскохозяйственных рабочих, остальные подразделения — боевые. Ланьков считает, что нельзя судить о боеспособности северокорейской армии — она принимала участие в боевых действиях с 1953 года. По его словам, КНДР может направить в Россию до 60 тысяч солдат.
News: #Ethiopian Foreign Minister says he cannot intervene in revoked Deutsche Welle reporters’ licenses
Ethiopian Minister of Foreign Affairs Gedion Timotheos (PhD) said he cannot intervene in the case of two Deutsche Welle (#DW) reporters whose licenses were permanently revoked by the Ethiopian Media Authority, citing the regulator’s accountability to Parliament rather than the executive branch.
The remarks were made during a joint press conference in Addis Abeba with German Federal Foreign Minister Johann Wadephul, in response to a question raised by DW journalist Richard Walker. Walker recalled Ethiopia’s ranking of 145th out of 180 countries in the 2025 Reporters Without Borders press freedom index and asked whether the government would take steps to improve the media environment and revisit the decision affecting the two DW Amharic service reporters based in the #Tigray and #Amhara regions.
“I cannot personally look into such matters,” Minister....
Read more: https://addisstandard.com/?p=54734