@kazarmochk · Post #5870 · 27.12.2025 г., 13:39
симаны. #yuwu
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
Пребарај: #yuwu
@kazarmochk · Post #5870 · 27.12.2025 г., 13:39
симаны. #yuwu
Hashtags
@haitang_weiyuu · Post #5189 · 04.07.2025 г., 03:18
Доброе утро, солнца! Всем прекрасного дня 💙 #yuwu https://x.com/Zhi_Yanzhi/status/1940963391352590422?t=BQcS16I5LJnU7Y1DVM_kiA&s=19
Hashtags
@haitang_weiyuu · Post #5019 · 03.06.2025 г., 15:39
#yuwu https://x.com/Zhi_Yanzhi/status/1929466831515070872?t=0Ixydbyi-QFoQq3kEy9yMg&s=19
Hashtags
@haitang_weiyuu · Post #4916 · 14.05.2025 г., 11:53
Полная чистая обложка седьмого (заключительного) тома романа "Остатки грязи" от издательства Seven Seas 💙 #yuwu https://x.com/akkaccel/status/1922387888995487881?t=W4dIk04sXZMOr5U3kFzgTA&s=19
Hashtags
@haitang_weiyuu · Post #4764 · 18.04.2025 г., 19:44
Доброй ночи 🩵 #yuwu https://x.com/butchinelle/status/1912978834795974712?t=Pync68s7OyvmxszDc3QKIg&s=19
Hashtags
@haitang_weiyuu · Post #4505 · 19.03.2025 г., 14:46
"A life like a Transient Dream" #yuwu https://x.com/artdarypeacher/status/1901725172861944162?t=Rj2OajmgaQ-flx3HTn4h0g&s=19
Hashtags
@haitang_weiyuu · Post #4428 · 08.03.2025 г., 17:03
Алтарный зверь 🌑 #yuwu https://x.com/cindith_x/status/1898412560220578260?t=LzEgpFWy3kryses2TAF7VQ&s=19
Hashtags
@haitang_weiyuu · Post #4373 · 03.03.2025 г., 06:18
Доброго утречка, солнца 🩵 Всем лёгкого и тёплого понедельника ~ #yuwu https://x.com/JeusDoodles/status/1896258886082117864?t=BiF4M9DV0fts3wz8OXN1Tw&s=19
Hashtags
@haitang_weiyuu · Post #4260 · 11.02.2025 г., 18:38
Сладких снов, дорогие 💗 #yuwu https://x.com/Zhi_Yanzhi/status/1888831896823779653?t=l-JwYKPC3AxHGoP4RVWiSQ&s=19
Hashtags
@haitang_weiyuu · Post #4248 · 10.02.2025 г., 04:21
Доброго утречка, дорогие 🩵 Всем отличного начала недели! С Днём Рождения, великий генерал Ублюдочной армии! С Днём Рождения, любимый Гу Ман 🐺🪷 #yuwu https://x.com/jubu_art/status/1888598235054583915?t=xNAuOm55EpJljnz0UbYi5A&s=19
Hashtags
@haitang_weiyuu · Post #4119 · 27.01.2025 г., 10:13
"Принцесса..." #yuwu https://x.com/JeusDoodles/status/1883616601733578985?t=XU31MRbKb7iL3QyUXkb-uQ&s=19
Hashtags
@haitang_weiyuu · Post #5527 · 22.11.2025 г., 15:56
Внезапно закончила 😬 #остатки_грязи#yuwu
Hashtags