@starvetbooks · Post #5141 · 11.04.2025 г., 15:42
♻️#FROM ANIMAL HEALTH INSTITUTE https://t.me/starvetbooks
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
Пребарај: #from
@starvetbooks · Post #5141 · 11.04.2025 г., 15:42
♻️#FROM ANIMAL HEALTH INSTITUTE https://t.me/starvetbooks
Hashtags
@Ai_artz · Post #3477 · 28.04.2026 г., 05:53
#from Double exposure caricature of a brasilian rainforest, flowers, waterfall Heart and love: magical ethereal nature, copper patina, desaturated neutral tones on burlap, dramatic impasto composition that brakes down the boundaries between an effective combination of concept, vision and mastery of medium (Georges Braque:0.7), (Fernand Leger:0.3), set in front of vivid background by Pablo Picasso S<AI watercolor and ink, oil on canvas, reflection, mist, sunshine --ar 16:9 ✅ sapir8697 _Discord @ai_artz🎨
Hashtags
@Ai_artz · Post #3475 · 21.04.2026 г., 08:33
#from Antique suburban cybertech collage of miscellaneous ephemera mixed with rusty macabre horror rain --v 6.0 --s 400 --c 25 ✅wonnetrunken _Midjourney v6.0 @ai_artz📺
Hashtags
@AI_artz · Post #3448 · 04.03.2026 г., 14:24
#from Medieval vilage, full moon, plague doctor walking on the streets, dark night, tranquility in the style of Yves Klein, abstract ✅ hondrus _Midjourney v6.0 @ai_artz🎨
Hashtags
@AI_artz · Post #3440 · 28.02.2026 г., 09:05
#from Impressionist oil painting about meditation reflected in one person --v 6.0 ✅ juanpreisler _Midjourney v6.0 @ai_artz🎨
Hashtags
@AI_artz · Post #3428 · 21.02.2026 г., 03:07
#from A child's teddy bear plush toy which looks soft and cuddly ✅ cparsons _Discord @ai_artz🧸
Hashtags
@AI_artz · Post #3405 · 10.02.2026 г., 11:07
#from Critters gathering under the black light harvest moon, by Eric Carle --ar 4:3 ✅ dyltheshyguy _Discord @ai_artz🌠
Hashtags
@AI_artz · Post #3381 · 30.01.2026 г., 12:48
#from Orisha,blanco,pureza, --v 6.0 ✅gaiberr327 _ Midjourney v6.0 @ai_artz🌿
Hashtags
@AI_artz · Post #3379 · 28.01.2026 г., 18:11
#from Oil painting portrait from the 1500s of a smiling girl ✅ giorgiogenau_08496 _Discord @ai_artz🌿
Hashtags
@AI_artz · Post #3361 · 23.01.2026 г., 19:21
#from Handsome mongol khan age twenty, muscular but thin, proud, full body portrait, watercolor style, black and white, 8k, --ar 2:3 ✅blackbeltmonkey _Midjourney v6.0 @ai_artz🌿
Hashtags
@AI_artz · Post #3348 · 16.01.2026 г., 16:06
#from A dynamic, abstract action painting featuring a cyclist in full speed. The cyclist's body is portrayed through a vibrant blend of colors and bold brushstrokes, with a sense of motion captured through the distorted, elongated shape. The background showcases a blurry, whirlwind of colors, representing the wind and the cyclist's adrenaline-filled journey. The overall atmosphere of the painting exudes energy, speed, and the thrill of competition. ✅ Blademort1988 _Ideogram v1.0 @ai_artz🚲
Hashtags
@AI_artz · Post #3293 · 31.12.2025 г., 19:35
#from Obbatala,viejo ✅gaiberr327 _ Midjourney v6.0 @ai_artz🦜
Hashtags