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 слични објави

Пребарај: #diario

当前筛选 #diario清除筛选
🌷Haditas Estudiosas📋

@apuntes_digitales · Post #5566 · 01.10.2023 г., 01:59

੭🍂 15 ideas para páginas de tu diario parte 2 ୧ 𝅄 . por @apuntes_digitales en edición otoño 16. ¿Qué hice hoy? 17. Tareas menos favoritas 18. Inspiración para outfits 19. DIYs que quiero intentar 20. ¿Cómo está el clima? 21. Una lista 22. Detalles sobre mi apariencia que me gustan 23. Lugar favorito para estar 24. Si el otoño fuera una persona... 25. Planes para Halloween 26. Tengo miedo de... 27. ¿Qué es el miedo? 28. Mi disfraz de Halloween 29. Recetas que te gustaría probar 30. Favoritos de octubre. Pd: no olvides participar en nuestra dinámica especial para celebrar el 1k 🥳toca aquí para ver más detalles #journaling#diario#prompts

🌷Haditas Estudiosas📋

@apuntes_digitales · Post #5543 · 29.09.2023 г., 23:00

੭🍂15ideasparapáginasdetudiario ୧ 𝅄 . por @apuntes_digitales en edición otoño 1. Metas de octubre 2. Películas de terror para ver 3. Si fuera una bruja 4. Mis villanos favoritos 5. Mejores dulces 6. Lo que me hace sentir confianza 7. Lo que me pone nervioso/a 8. Temporada favorita 9. ¿Qué quiero lograr antes de que termine el año? 10. Último sueño que recuerdo 11. Frases que amo 12. Mi pérdida más difícil 13. Estoy emocionado/a por... 14. Ideas para disfraces de Halloween 15. Un lugar al que quiero ir segunda parte ? 20 🎃 Pd: gracias a haruki por la idea <3 próximamente seguiremos cumpliendo con sus pedidos, gracias por el apoyo y por leer 🫰 #journaling#diario#prompts