Для тех кто пишет расширения на 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
Adultery in the later Middle Ages was punished by religious penance, fines, corporal punishment, and public humiliation. In southern France, a punishment called “the run” forced an adulterous couple to move through the streets. They were often naked or in undergarments. In some cases, the woman held a rope attached to her lover’s genitals. A town crier announced the sentence to gather a crowd. The couple could be beaten at crossroads during the procession. Over time, towns increasingly allowed fines instead of public humiliation, especially for those who could pay, while poorer people were more often sentenced to “the run.”
⚖️🏃♂️📜
[Read more]
@googlefactss
#MiddleAges#HistoryFacts#MedievalLaw#Adultery#france#punishment
Правящая коалиция "Светофор" намерена ужесточить наказание за взяточничество и коррупцию среди депутатов. Сегодня в бундестаге обсуждалось внесение соответствующей поправки в уголовный кодекс. Изменения предусматривают лишение свободы сроком до трех лет или выплату штрафа, если представители власти заключают сделки, используя свое положение и мандат.
До этого момента наказание для депутатов было предусмотрено только в том случае, если они получали деньги или другие льготы за продвижение и отстаивание определенной позиции при исполнении своего мандата. Например, во время произнесения речи или голосования в бундестаге. "Наши граждане должны быть уверены, что депутаты работают на общее благо, а не на свой карман", - заявил парламентский секретарь СДПГ Йоханнес Фехнер.
Основной причиной для ужесточения закона стал скандал с поставками масок во время пандемии Covid-19, в котором были замешены бывшие депутаты от ХСС. На ранних этапах распространения коронавируса они получали многомиллионные комиссионные за посредничество в сделках. Ранее закон не мог призвать членов ХСС к ответу, но теперь ситуация изменится.
Источники: https://www.tagesschau.de/
https://www.spiegel.de/
https://www.berliner-zeitung.de/
#Германия#Deutschland#Germany#Demokratie#sozial#Bundestag#Ampel#Strafen#Parlamentarier#deputies#law#punishment