Для тех кто пишет расширения на 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
🇨🇳🤝🇷🇸Serbian MiG-29B fighters have received Chinese CM-400AKG hypersonic aeroballistic missiles as we reported yesterday, but let's look closer.
Photos have appeared online showing a fighter equipped with two Chinese CM-400AKG air-to-surface missiles. If confirmed, Serbia would become the second foreign operator of this weapon system.
The CM-400AKG is an aeroballistic missile developed on the basis of the SY400 unguided air-launched rocket. Since it weighs only about 910 kg, it can be carried even by light fighters such as the JF-17 Thunder, for which it was originally designed.
It reaches speeds of around Mach 5.5 to 6.3, which effectively makes Serbian MiG-29s the first fighters in Europe outside of Russia to gain hypersonic strike capability. At the current stage, this would put them ahead even of the Rafale F4.1/5 and Rafale-M, which are still awaiting the development and operational readiness of the ASN4G hypersonic missile. Depending on the variant, its strike range is reported to be between 240 and 400 km.
The guidance system includes:
- Inertial and satellite navigation
- Passive radar seeker
- Optionally: an infrared or television guidance channel
Serbia inherited part of its MiG-29 fleet from the Yugoslav Air Force, and later received additional aircraft from Russia and Belarus.
Although the onboard radars of these aircraft already lag well behind modern systems, integrating the CM-400AKG could significantly expand their strike capabilities. When using this missile, targeting data can come from external reconnaissance assets, so the age of the aircraft’s own radar is not a decisive factor.
At the same time, in 2024 Belgrade signed an agreement to purchase French Dassault Rafale fighters, which, according to specialized media reports, will have limited capabilities and will not receive long-range Meteor missiles.
Many link the choice of French aircraft to political factors and Serbia’s desire for closer integration with the European Union.
It is worth noting that Serbia has already purchased Chinese weapons before, for example the HQ-22 air defense system, selected as an alternative to the sanctioned Russian S-300 and S-400 systems.
If the integration of the CM-400AKG is confirmed, it could extend the service life of Serbian MiG-29s and draw the attention of other operators of this fighter, such as Algeria, Myanmar, Belarus, and Turkmenistan.
🤫 It is also noteworthy that, under the current circumstances, the Russian Ministry of Defense could quite plausibly purchase a batch of 300 to 500 CM-400AKG missiles, after which specialists at aircraft repair plants could adapt the weapon control systems of MiG-29S, SMT, M2, and MiG-29K fighters in service with the Russian Aerospace Forces for the use of these missiles in further strikes against AFU targets.
#info
#Mig29#Serbia
#China#Air_to_Air
#radar