TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

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

Hashtags

Резултати

Пронајдени 2 слични објави

Пребарај: #paura

当前筛选 #paura清除筛选
Savino Balzano

@savinobalzano · Post #757 · 25.09.2024 г., 15:00

https://x.com/SavinoBalzano/status/1838956477412671791?t=7zr8BT_F7_hp0I-qp5fG1A&s=19 Si esulta perché il #coraggio e l'#amore hanno prevalso sull'#odio e la #paura: raggiunte le 500 mila firme per il #ReferendumCittadinanza. Bene. Domandina per quelli buoni, per gli esponenti del #PD, ad esempio: se la normativa attuale è vergognosa (peraltro fu Amato, nel 1992, a introdurla) e manifestazione di odio e paura, perché non l'avete mai modificata nei vostri lunghissimi anni di #governo? Si, perché il Partito Democratico - nonostante non abbia mai vinto le elezioni - è praticamente sempre stato in maggioranza (forse, "democratico" solo di nome). Chi vi ha impedito di far prevalere in quei lunghi anni l'amore e il coraggio? di tempo per spazzare via odio e paura ne avete avuto moltissimo in effetti. Le nostre regole sulla #cittadinanza non ci hanno impedito (dati Eurostat 2022) di piazzarci al quinto posto per cittadinanze concesse in rapporto alla popolazione. Inoltre, nel 2019, Migration Policy Group attestava che ottenere la cittadinanza italiana fosse più facile che ottenere quella spagnola e che la difficoltà di ottenere la tedesca fosse assai simile alla nostra. In effetti, molto più semplice era ottenere la francese e abbiamo visto cosa ha comportato in termini di cattiva integrazione e instabilità sociale. Occhio poi a un fatto: la nostra normativa in materia di ricongiungimento familiare è piuttosto semplificata e l'allargamento della concessione della cittadinanza deve essere ponderato anche in considerazione di questo aspetto. La contraddizione di fondo è però un'altra: la #sinistrucola ci deve spiegare, oltre a dare ai migranti un bel pezzo di carta, cos'altro voglia offrire loro: caporalato? sfruttamento? precarietà? Come le integriamo, dignotosamente, tutte queste persone, con quali risorse? Soprattutto se nel frattempo si continua ad applaudire a un'#UE che insiste nel chiedere un poderoso taglio alla spesa pubblica. La questione riguarda tutti, dal momento che chi non riesce ad integrarsi rischia di dover delinquere per sopravvivere e di insicurezza ne patiamo già troppa. Voi che siete quelli buoni e coraggiosi, fateci sapere che tocca fare. Altrimenti? Altrimenti avremo contato più di 500 mila ipocriti. La mia a #5Notizie, #RadioCusanoCampus.

Yukiokhruner

@yukiokhruner · Post #23 · 13.04.2022 г., 18:05

É sempre difficile confrontarsi con la propria oscurità. #vaporonda#vaporwave#vapourwave#vaporart#seapunk#webpunk#glitch#glitchart#glitchartistscollective#chillwave#aesthetic#vaporwaveaesthetic#vaporwaveaesthetics#malinconia#melancholy#tristezza#sadness#sadboy#lofi#oscurità#darkness#ombra#shadow#paura#fear