Для тех кто пишет расширения на 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
🚨الخارجية الفرنسية: الوزيران الفرنسي والباكستاني أكدا أهمية إدراج لبنان ضمن بنود وقف إطلاق النار لضمان استمراره
French Foreign Ministry:
The French and Pakistani ministers emphasized the importance of including #Lebanon within the ceasefire terms to ensure its sustainability.
ــــــــــــــ
📲 قناة موقع بنت جبيل على واتساب
https://whatsapp.com/channel/0029VaG3H3R8fewmfDqRKX0Q
🇮🇷🇮🇷 Islamic Revolutionary Guard Corps (IRGC): We will fulfill our duty toward #Lebanon, respond to the aggressors, and make them regret [their actions].
—❗🇱🇧/🇮🇱NEW: Israeli media talking about a security event in southern #Lebanon and families of the iof soldiers were notified.
According to the report, At least 5 military helicopters in evacuation operations in southern Lebanon.
@AlHaqNews
🇵🇰🇮🇷🇱🇧🔻Pakistan’s Minister of Defense, H.E KHAWAJA MUHAMMAD ASIF: Israel is an evil and a curse on humanity. While peace talks are underway, it commits genocide in #Lebanon.
@AlHaqNews
🇱🇧🇱🇧Hussein Wahib Yassin (Haj Abu Mohammad Habib), a senior commander of Hezbollah, was martyred as a result of an airstrike by the Zionist regime’s army on southern Lebanon.
🟡 Martyr Yassin was from the town of Majdel Selm in southern Lebanon and was an experienced field commander of Hezbollah. His record includes participation in the 33‑day war, the Battle of Al‑Aqsa Storm on the southern Lebanon front, the Syrian war, and accompanying the martyred commanders Haj Qasem Soleimani and Haj Emad Mughniyeh.
🟡 The exact time and place of this mujahid commander’s martyrdom are not specified.
#Lebanon
🇱🇧 According to a new report from the Lebanese Ministry of Health, the death toll from yesterday’s Israeli attacks on Lebanon has now reached 303 martyrs, with over 1,150 wounded.
✍️ Unfortunately, the casualty count continues to rise. Hezbollah, without any support from Lebanon’s incompetent government, is defending the country’s soil and its people.
#Lebanon
🇱🇧#Lebanon: The statue of Jesus Christ which was destroyed by an IDF soldier was replaced yesterday by a new one which was donated by Italian UNIFIL troops.
🇱🇧#Lebanon: Lebanon’s prime minister has reportedly ordered the Lebanese Army to deploy across Beirut to ensure that only official armed forces have access to weapons, restricting possession exclusively to state security institutions.
The government has also decided to file an urgent complaint with the United Nations Security Council in response to Israel’s indiscriminate attacks on civilian infrastructure in Lebanon.
At the start of the session, the PM stated that Lebanon is "tired of mere statements of condemnation", expressing frustration that the country was not included in the ceasefire announced between the US and Iran.
(via MTV news)
🇱🇧#Lebanon: The pro-Iranian hacktivist group "Fatemiyoun Electronic Team" (FET) targeted the website of MTV Lebanon overnight, issuing threats against the channel and causing a temporary outage.
The group carries out digital attacks on behalf of the Iraqi militia "Kataib Hezbollah" (also known as Hezbollah Brigades), which is part of the Popular Mobilization Forces (PMF).
(via @LebOSINT on X)