Для тех кто пишет расширения на 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
👥Адамдар немесе топтар арасындағы жанжалға не әсер етеді және оны қалай шешуге болады?
👤Осы туралы 1950 жылдары америкалық психолог Музафер Шериф Оклахома штатындағы балалар лагерінде зерттеу жүргізді. Әлеуметтік психологияда бұл тәжірибе The Robbers cave (Қарақшылар үңгірі) деген атаумен танымал.
🔍Толығырақ карусельден оқыңыз
___
👥Что приводит к межгрупповому конфликту и как можно его разрешить?
👤В 1950-х годах американский психолог Музафер Шериф провел исследование в детском лагере в Оклахоме. В социальной психологии исследование известно как Robbers cave experiment (Пещера разбойников).
🔍Подробнее об эксперименте можно узнать в карусели.
#ҚҚДИ#KIPD
#SocialPsychology#ConflictResolution#RobbersCaveExperiment
🚀 Ukraine's Negotiator Optimistic About Peace Deal with Russia
Ukraine's chief negotiator with Russia has expressed optimism about reaching a peace agreement with Russian President Vladimir Putin in the near future. Bloomberg posted on X, highlighting the negotiator's belief that a resolution to the ongoing conflict could be achieved soon. This development comes amid ongoing tensions and efforts to find a diplomatic solution to the hostilities between the two nations. The negotiator's comments suggest a potential breakthrough in the peace talks, which have been a focal point for international observers. The situation remains fluid, with both sides continuing to engage in discussions aimed at ending the conflict.
#Ukraine#Russia#PeaceTalks#Diplomacy#ConflictResolution#InternationalRelations
🚀 Polymarket Odds Drop as Iran-Israel/US Conflict Talks Stall
Polymarket odds for the Iran-Israel/US conflict ending before April 15 have decreased to 47%, marking a 22% drop within 24 hours. According to NS3.AI, the odds for the conflict concluding before April 30 have also fallen to 55%, down 16%. This decline follows the latest round of US-Iran talks, which ended without reaching an agreement.
#Polymarket#IranIsraelConflict#USTalks#IranUSRelations#OddsDrop#ConflictResolution#April15#April30
🚀 Iran's Leadership Revamp Amid Peace Talks with the US
The ongoing conflict in Iran has prompted significant changes in the nation's leadership structure. Bloomberg posted on X that the Revolutionary Guards are set to play a pivotal role in the upcoming peace negotiations with the United States this weekend. This shift in power dynamics underscores the growing influence of the Revolutionary Guards in Iran's political landscape. The talks are expected to address key issues surrounding the conflict and aim to establish a framework for peace. Observers are closely watching how the involvement of the Revolutionary Guards will impact the discussions and the potential outcomes of these negotiations.
#Iran#LeadershipRevamp#PeaceTalks#RevolutionaryGuards#USIranRelations#PoliticalLandscape#ConflictResolution#IranPolitics#PeaceNegotiations
🚀 Russia and Ukraine Conduct Prisoner Swap Mediated by UAE
Russia and Ukraine have successfully exchanged 175 prisoners of war, with the United Arab Emirates playing a mediating role in the process. Bloomberg posted on X, highlighting the significance of this exchange amid ongoing tensions between the two nations. The swap marks a notable development in the efforts to address humanitarian concerns arising from the conflict. Both countries have been engaged in a prolonged conflict, and such exchanges are seen as steps towards easing tensions and addressing the humanitarian impact of the war. The involvement of the UAE underscores the international community's interest in facilitating dialogue and resolution between Russia and Ukraine. This exchange is part of ongoing efforts to manage the humanitarian aspects of the conflict, which has drawn widespread international attention.
#Russia#Ukraine#PrisonerSwap#UAE#HumanitarianEfforts#ConflictResolution#InternationalDiplomacy#HumanitarianImpact#Tensions#War