@talks · Post #18 · 29.07.2016 г., 08:31
#courage#stevejobs
Hashtags
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
Пребарај: #courage
@talks · Post #18 · 29.07.2016 г., 08:31
#courage#stevejobs
Hashtags
@QuietWorld · Post #7161 · 20.01.2020 г., 10:35
what's coming will come & we'll meet it when it does #life#courage#motivation#inspiration#positivity@quietworld🍃
@QuietWorld · Post #6948 · 22.11.2019 г., 15:47
The test of courage comes when we are in the minority. The test of tolerance comes when we are in the majority. #life#truth#courage#tolerance @quietworld🍃
Hashtags
@wildthemestelegram · Post #1088 · 05.02.2024 г., 10:00
Courage the Cowardly Dog #pink #white #brown #black #dog #cartoon #Courage #cowardly #personage #art ᅠ𝐖𝐢𝐥𝐝 𝐓𝐞𝐥𝐞𝐠𝐫𝐚𝐦 𝐓𝐡𝐞𝐦𝐞𝐬 ᅠ═──═⌘═──═ᅠ
@nido_russia · Post #1689 · 03.07.2024 г., 08:56
“Success usually comes to those who are too busy to be looking for it.” —Henry David Thoreau “Develop success from failures. Discouragement and failure are two of the surest stepping stones to success.” —Dale Carnegie whosoever shall gather together against thee shall fall for thy sake Isaiah 54:15-17 KJV So fear not men.... Quaran (5:44) Subscribe:@nido_russia https://t.me/nido_russia/1689 #motivation#quotes#wisdom#courage#nidorussia
@sos_donbass · Post #1480 · 22.03.2025 г., 16:30
Un message venant de Sibérie, de la part d’une des Cytoyens russes : Aujourd’hui, j’ai assisté à une pièce de théâtre. Sur scène, il y avait un jeune homme de 25 ans. Il revenait du Donbass, où il participait à une opération militaire spéciale. Il porte une prothèse à un œil, et l’autre ne voit plus. Pourtant, malgré cette épreuve immense, il ne s’est pas enfermé chez lui. Il ne s’est pas laissé submerger par le chagrin ni par le désespoir. Au contraire, il est monté sur scène. Il participe à la vie, il cherche sa place, il continue d’avancer. Peut-être que, s’il avait été en pleine santé, il n’aurait jamais pensé au théâtre… Mais la vie change nos chemins. Elle nous impose parfois des épreuves que l’on n’aurait jamais imaginées. Ce que j’ai vu aujourd’hui m’a touché profondément. Car ce n’est pas seulement son courage à lui que j’admire, mais aussi celui de ceux qui l’entourent, qui ne le laissent pas seul dans sa douleur. C’est un exemple pour nous tous. À tous ceux qui traversent des moments difficiles, qui se sentent à bout de force, qui doutent, qui ont envie de tout lâcher : n’abandonnez pas. La vie ne suit pas toujours le chemin qu’on avait prévu, mais chaque détour peut mener vers quelque chose de beau, de grand, ou d’inattendu. Il y a toujours un moyen de continuer à vivre, à se réinventer, à trouver une lumière, même au milieu de l’obscurité. Ne restez pas seuls. Cherchez la main tendue, le regard bienveillant, la communauté qui soutient. Le courage, ce n’est pas de ne pas tomber. C’est de se relever, encore et encore. #Force#Courage#Espoir#NeJamaisAbandonner#Inspiration#Respect#Solidarité#LeçonDeVie#LumièreDansLOmbre#NePerdezPasConfiance#russieukraine#ukrainewar