Для тех кто пишет расширения на 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
Astăzi am înțeles clar că, în Republica Moldova, pentru cei din PAS, pentru cei aflați la guvernare, nu mai există justiție. Iar dacă justiția nu mai există pentru ei, atunci de astăzi nu mai există nici pentru mine și nici pentru cetățenii Republicii Moldova. #partidulnostru
Astăzi am înregistrat un proiect de lege care permite aflarea, timp de un an, pe teritoriul Republicii Moldova a automobilelor înmatriculate peste hotare, după modelul UE.
#partidulnostru
Сегодня мы зарегистрировали законопроект, который позволяет автомобилям с иностранной регистрацией находиться на территории Республики Молдова в течение одного года по модели ЕС.
#partidulnostru
Fălești are o nouă atracție culturală!
Primarul Alexandr Severin #PartidulNostru a inaugurat Aleea Culturii Eminesciene – un spațiu artistic dedicat lui Mihai Eminescu, amenajat în parcul „Victoriei”. Proiectul, inițiat de artistul Damian Furdui, originar din Fălești, a reunit patru sculptori care au creat lucrări inspirate din opera eminesciană.
---
В городе Фалешты появилась новая туристическая достопримечательность:Аллея культуры Эминеску в парке Победы. Проект был реализован в рамках скульптурного лагеря, посвящённого великому поэту Михаю Эминеску, и стал возможным благодаря поддержке Министерства культуры, примарии Фалешт и других партнёров.
Astăzi am avut o întrevedere cu Nick Pietrowicz, Însărcinat cu Afaceri al Ambasada SUA în Republica Moldova. Am discutat despre evoluția relațiilor moldo-americane, inclusiv despre cooperarea economică și schimburile comerciale, care au un potențial semnificativ încă nevalorificat. Totodată, am trecut în revistă agenda parlamentară a fracțiunii Partidul Nostru.
De asemenea, am abordat subiecte legate de procesul de reintegrare a țării și am avut un schimb de opinii privind securitatea regională, în contextul intereselor strategice ale Republica Moldova.
___
Сегодня у меня состоялась встреча с Ником Петровичем, временным поверенным в делах Посольства США в Республике Молдова. Мы обсудили развитие молдо-американских отношений, включая экономическое сотрудничество и торговые обмены, которые обладают значительным, пока ещё не реализованным потенциалом. Также мы рассмотрели парламентскую повестку фракции Нашей Партии.
Кроме того, мы затронули вопросы, связанные с процессом реинтеграции страны, и обменялись мнениями по поводу региональной безопасности в контексте стратегических интересов Республики Молдова. #PartidulNostru#НашаПартия
E timpul să schimbăm legea: artiștii, actorii, sportivii, oamenii de afaceri și medicii trebuie să rămână în Parlament și să își continue activitatea profesională!
Detalii aici...
__
Пора изменить закон: артисты, актёры, спортсмены, предприниматели и врачи должны оставаться в парламенте и продолжать свою профессиональную деятельность!
Подробности - по ссылке...
#PartidulNostru#НашаПартия
Ședința comună a Guvernului cu reprezentanții fracțiunilor parlamentare. Detalii aici…
—
Совместное заседание правительства с представителями парламентских фракций. Подробности – по ссылке…
#PartidulNostru#НашаПартия
Luare de cuvânt în timpul examinării proiectului privind declararea stării de urgență – ședința Parlamentului din 24 martie 2026.
Detalii aici:
__
Выступление во время рассмотрения проекта о введении чрезвычайного положения - заседание Парламента от 24 марта, 2026 года.
Подробности:
#PartidulNostru#НашаПартия