Для тех кто пишет расширения на 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
#Resistenza oggi è opporsi a tutto questo, rendersene #liberi.
È questo il vero #fascismo: imporre il degrado agli occhi dei nostri figli e raccontarlo come emancipazione.
Questa è la vera #dittatura: offuscare le rivendicazioni sociali, nascoste da una bandiera cucita con anomia e squallore.
Questa è la vera #violenza: depravazione sponsorizzata dalle multinazionali.
Meglio qualsiasi altra cosa.
https://x.com/SavinoBalzano/status/1890336882346664431?t=76VvEwI_ntFip5o3QAUrzQ&s=19
#Scalfarotto riesce a paragonare il dialogo tra #Trump e #Putin al patto Ribbentrop-Molotov. Si tratta di quello siglato nel '39 tra Hitler e Stalin che, impegnandosi reciprocamente alla non aggressione (e a qualcosa di più, che ancora oggi imbarazza certi sinistri), si spartirono la #Polonia.
Per carità, ai paralleli strampalati siamo stati abituati in questi anni di #guerra: ci hanno ripropinato ossessivamente la Conferenza di Monaco del '38, l'#appeasement di Neville #Chamberlain, le citazioni di Winston #Churchill che stanno sempre bene.
Tutte puttanate, ma quella di #IvanScalfarotto forse davvero merita il primo premio: #DonaldTrump e #VladimirPutin dialogano per porre fine a una guerra alimentata da progressisti e liberali occidentali e lui li paragona ai due dittatori che diedero il via alla Seconda Guerra Mondiale. Hai vinto Ivan: come possiamo intitolarlo il suo premio? qualche idea?
Quelli che hanno soffiato sul fuoco per due anni, parlo in generale, rischiando davvero la deflagrazione di un conflitto totale e nucleare, hanno ancora il coraggio di parlare e di dare sciocche lezioni di storia. Una storia che, se va bene, hanno studiato su La Repubblica.
Ciò che abbiamo oggi sotto gli occhi è il risultato della totale assenza di visione degli ultimi anni: dell'ideologia degli scemi che parlavano della guerra di civiltà, dello scontro tra #democrazia e #dittatura, di quello tra #libertà e barbarie. Le ragioni del conflitto sono sempre state altre, decisamente più prosaiche, e oggi lo vediamo nitidamente: dopo aver causato un milione di morti, dopo aver avvelenato un paese (anche con le armi occidentali) che tale resterà per decenni, probabilmente anche di più.
È pazzesca la totale assenza di dignità in certi soggetti: l'#UE ancora farnetica di un suo coinvolgimento. Non ci sarà: non conteremo nulla.
Ogni volta che qualcuno ha provato a dialogare con Putin è stato coperto di insulti, persino sanzionato. Ha totalmente ragione #Orban: la partecipazione alle trattative devi meritartela e non non ce la meritiamo. Non dopo aver leccato per anni le suole di #Biden.
Abbiamo lasciato che fanatiche invasate come #VonDerLeyen e #Kallas guidassero la nostra agenda, a proposito di patriarcato. Hanno farneticato per anni di sconfitta della Russia, di lotta fino alla vittoria finale.
Oggi #USA, #Russia e #Cina dialogano senza di noi, anche senza la #NATO (guidata da un altro ciarlatano che immaginava di poter dire la sua dinanzi alla volontà statunitense): arrivano persino a immaginare lo stanziamento delle loro truppe sul territorio ucraino. E ne parlano senza l'#Ucraina!
#Zelensky dichiara il suo dispiacere per il mancato coinvolgimento: pare un ragazzino escluso da una festa di compleanno. Una roba deprimente, soprattutto se rimandiamo la memoria alla narrazione della nostra stampa e della nostra televisione che per anni lo ha paragonato a un eroe di guerra. Uno spettacolo oltre il pietoso.
Chi vanegga di un coinvolgimento europeo o di #Kiev alla trattativa non si rende conto che quest'ultima è già cominciata, anzi, probabilmente è già finita.
Nessuna paura, ce ne accorgeremo presto, noi siamo gli idioti a cui il cameriere consegna il conto alla fine del pasto: prego, si accomodi, la cassa è da quella parte.