Для тех кто пишет расширения на 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
#Desert
Iced Fudge Brownies
22p 342kcal/p
Brownie 240g butter 360g semi-sweet chocolate 200g sugar 1tbsp vanilla extract 1tbsp instant coffee granules 4 L eggs room temperature 62.5g all-purpose flour 43g cocoa powder 1tsp baking powder
CHOCOLATE ICING 110g butter, at room temperature 360g powdered sugar 43g cocoa powder 2tsp vanilla extract 60g warmed milk sprinkles, for decorating (opt)
Instructions
1. 9×13 inch pan w/paper 2. melt the butter & 3/4 chocolate chips until smooth. Stir in the sugar, vanilla, and instant coffee. 3. whisk 4 eggs, add into the chocolate mix. Add the flour, cocoa powder, and baking powder. Stir until just combined. Stir in the remaining 1/4 chocolate chips. Spread into baking pan.
175°C 28-30min. Cool. 4. make the icing. Mix the butter, powdered sugar, cocoa powder, vanilla, and 1/4 cup warm milk until smooth, adding additional warm milk until the frosting becomes thicker. Add more sugar if needed. Spread the icing over the bars.
Decorate with sprinkles.
Kinder Rice Krispie bar
60g salted or unsalted butter
300g mini marshmallows
125g Rice Krispies
24 mini Kinder chocolate bars, 8 (100g) for the base, 16 (200g) for the topping Optional: Kinder halves to decorate
Tin size: 8x8"
#Desert
🌎 In Australia’s dry grasslands, the spinifex hopping mouse leaps up to 3 meters in a single bound—over 10 times its body length! Powerful back legs and long tails help it escape predators and thrive in deserts where water is scarce. ✨
#animals⚡#adaptation⚡#desert
👉subscribe Interesting Planet