@cosplayuploadtest2 · Post #102130 · 23.03.2025 г., 03:01
Title: Che_Che,_LEEHEE_EXPRESS_LEBE_217B_Set.02 Authors: #None Tags: #None#Che_Che#LEEHEE_EXPRESS#Che#Che#LEEHEE#EXPRESS#LEBE_217B#Set #02 recommendation: None TelegraphLinks:page-0-21
TGINSIGHT SIMILAR POSTS
Изворен канал @pythonotes · Post #381 · 23 окт.
Установить свойства виджета в PySide можно не только через соответствующие методы и конструктор класса. Можно их изменять с помощью метода setProperty по имени. btn = QPushButton("Click Me") btn.setProperty("flat", True) Это аналогично вызову btn.setFlat(True) Если указать несуществующее свойство, то оно просто создается btn.setProperty("btnType", "super") Получить его значение можно методом .property(name) btn_type = btn.property("btnType") Когда это может быть полезно? ▫️Можно просто хранить какие то данные в виджете и потом их доставать обратно widget = QWidget() widget.setProperty('my_data', 123) print(widget.property('my_data')) ▫️ Назначая эти свойства разным виджетам можно потом отличить виджеты во время итераци по ним. Например, найти все кнопки со свойством my_data="superbtn". Но ведь вместо кастомного свойства можно использовать objectName, будет тот же результат. Да, но y ObjectName есть ограничение - только строки. ▫️ Если нам потребуется не просто поиск а, например, сортировка по числу, то свойства позволяют нам это сделать. Поддерживается любой тип данных widget.setProperty('my_data', {'Key': 'value'}) widget.setProperty('order', 1) all_widgets.sort(key=w: w.property('order')) Но ведь Python позволяет всё вышеперечисленное сделать простым созданием атрибута у объекта widget.order = 1 widget.my_data = 123 Да, но я думаю что не надо объяснять почему не стоит так делать. К тому же, если у виджета нет свойства то метод .property(name) вернет None, а отсутствующий атрибут выбросит исключение. ▫️ Действительно полезное применение кастомным свойствам - контроль стилей. Здесь атрибутами не обойтись, нужны именно свойства. Дело в том, что в селекторах стилей можно указывать конкретные свойства виджетов на которые следует назначать стиль. Просто запустите этот код from PySide2.QtWidgets import * if __name__ == "__main__": app = QApplication([]) widget = QWidget(minimumWidth=300) layout = QVBoxLayout(widget) btn1 = QPushButton("Action 1") btn2 = QPushButton("Action 2") btn3 = QPushButton("Action 3", flat=True) layout.addWidget(btn1) layout.addWidget(btn2) layout.addWidget(btn3) # добавим кастомное свойство одной кнопке btn1.setProperty("btnType", "super") # добавляем стили widget.setStyleSheet( """ QPushButton[btnType="super"] { background-color: yellow; color: red; } QPushButton[flat="true"] { color: yellow; } """ ) widget.show() app.exec_() С помощью селектора мы избирательно назначили стили на конкретные кнопки. Как получить список всех кастомный свойств? Функция получения списка кастомных свойств отличается от получения дефолтных. def print_widget_dyn_properties(widget): for prop_name in widget.dynamicPropertyNames(): property_name = prop_name.data().decode() property_value = widget.property(property_name) print(f"{property_name}: {property_value}") #tricks#qt
Пребарај: #che
@cosplayuploadtest2 · Post #102130 · 23.03.2025 г., 03:01
Title: Che_Che,_LEEHEE_EXPRESS_LEBE_217B_Set.02 Authors: #None Tags: #None#Che_Che#LEEHEE_EXPRESS#Che#Che#LEEHEE#EXPRESS#LEBE_217B#Set #02 recommendation: None TelegraphLinks:page-0-21
@cosplayuploadtest2 · Post #102098 · 23.03.2025 г., 03:00
Title: Che_Che,_LEEHEE_EXPRESS_LEBE_217B_Set.01 Authors: #None Tags: #None#Che_Che#LEEHEE_EXPRESS#Che#Che#LEEHEE#EXPRESS#LEBE_217B#Set #01 recommendation: None TelegraphLinks:page-0-23
@savinobalzano · Post #936 · 17.03.2025 г., 10:06
https://x.com/SavinoBalzano/status/1901575776895463908?t=LPK8gKwEasKGDGdOIsRWJQ&s=19 E come #Enrico E come #Elly Quella di #Berlinguer è una delle figure più meschinamente strumentalizzate dalla #sinistrucola nel Paese. Mai fatto santini in vita mia: Berlinguer ha certamente commesso i suoi errori. Ricordo quello scontro memorabile tra lui e #Bobbio. Il primo, secondo alcuni frainteso (ad esempio secondo @lucatelese), immaginava l'austerità come forma di lotta di classe. Uno strumento attraverso il quale redistribuire ricchezza. Il secondo che gli ricordava come l'austerità non fosse una scelta per il poveraccio, ma una condizione di vita ineludibile. Però Berlinguer resta Berlinguer: un gigante rispetto ai figuri che popolano (o infestano) il campo santo della sinistrucola. Che memoria tradita quella di Enrico, da eredi che avrebbe senz'altro diseredato: è diventato come il #Che, un personaggio per fare le magliette. E allora stampano il suo sguardo sulle tessere di un Partito che Berlinguer avrebbe combattuto con tutte le sue forze (che assordante il silenzio della sua famiglia!), registi improvvisati ne girano film su film. Ecco, sembrerà un po' forte, ma Enrico è diventato un po' come Benito, per certi aspetti: un personaggio per far marketing e soldi a palate. Sta roba io l'ho vissuta e rivissuta da ragazzino. L'ho raccontato molte volte, sono di Cerignola, la città di #GiuseppeDiVittorio: in occasione di ogni santa campagna elettorale per le amministrative, dal palco dinanzi alla villa comunale, personaggetti picoli piccoli facevano a chi urlava più forte il suo nome per strappare qualche voto in più: «peppino! peppino! peppino nostro!». E si percuotevano il petto. In un vecchio scantinato era accatastato a pezzi uno storico murale che rappresentava il Sindacalista (con la S maiuscola, oggi spesso inutilizzabile). Ogni volta che si votava, i sinistrucoli cerignolani si sbracciavano istericamente: «lo riporteremo alla luce! lo restituiremo alla città! tornerà al suo antico splendore!». Non hanno mai fatto niente. Alla fine venne riesumato, riassemblato, restituito alla cittadinanza da un ottimo Sindaco ex missino. Questi sono gli eredi di Berlinguer e di #DiVittorio oggi in Italia: affaristi, affabulatori, ciarlatani senza arte né parte. Gente alla quale, mi ci giocherei un braccio, Enrico e Peppino non avrebbero mai rivolto nemmeno un cenno di saluto.