Для тех кто пишет расширения на 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
⠀
Шарлиз Терон для Harpers Bazaar, 2023
⠀
💬 «Чем старше становишься, тем яснее понимаешь, что нужно найти то, что важно именно для тебя. Не стоит слишком зацикливаться на том, что подумают другие. С возрастом это становится менее важным — успех становится чем-то гораздо более личным»
⠀
#ШарлизТерон#CharlizeTheron
🎬 From Ballet to Blockbusters
🎉Today, we celebrate Charlize Theron
(/ʃɑrˈliːz ˈθɛrən/, b. 1975) — the South African-born icon who redefined Hollywood with her raw talent, versatility, and uncompromising presence. 🇿🇦
🏆 Awards & Legacy
Oscar winner (Monster), Golden Globe recipient, and BAFTA nominee, Theron shines in roles that demand intensity — from Mad Max: Fury Road to Bombshell and The Devil’s Advocate.
🔍 Did you know?
🔹 Dancer turned actor: A knee injury ended her ballet career, paving the way for acting.
🔹 Discovered mid-argument: A Hollywood agent spotted her during a heated bank dispute!
💬 In Her Words:
I grew up in South Africa and I would look at maps and we were at the bottom of the world. There was this whole thing up there. I was always reading encyclopedias about the world. So travel was something I was always attracted to.
🌟 Here’s to more groundbreaking roles!
#CharlizeTheron#SouthAfrica#HollywoodStar#OscarWinner#WomenInFilm
«Я работала моделью, но быстро поняла, что это не мое. Я люблю говорить».
Сегодня Шарлиз Терон исполнилось 50 лет.
#ВИДЕОТЕКА
#CharlizeTheron
#2DaysInTheValley
#ДваДняВДолине
#TheDevilsAdvocate
#АдвокатДьявола
#TheCiderHouseRules
#ПравилаВиноделов
#ReindeerGames
#АзартныеИгры
#TheItalianJob
#ИтальянскаяРабота
#NorthCountry
#СевернаяСтрана
#Hancock
#Хэнкок
#MadMaxFuryRoad
#БезумныйМаксДорогаЯрости
#AtomicBlonde
#ВзрывнаяБлондинка
#FastX
#Форсаж10