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

Резултати

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

Пребарај: #superheroes

当前筛选 #superheroes清除筛选
movies & series 🍿

@images · Post #1543 · 30.05.2024 г., 13:43

🍿 The Last Adventure of 'The Umbrella Academy'! 📆Premiere: August 8, 2024 🎭Genre: #Superheroes · #Drama The Hargreeves return for one final mission in the fourth and last season of 'The Umbrella Academy'. This time, without their powers, they must adapt to normal life, though chaos still ensues. 🌀 Elliot Page, Tom Hopper, and the rest of the original cast are back, along with new additions Nick Offerman and Megan Mullally. The curious part: the Thibedeaus, college professors with extreme déjà vu! 🤯 Reginald Hargreeves is back, leading a dark empire, while a mysterious organization believes reality is a lie. Don’t miss the trailer set to 'The Final Countdown'. 🎬💥 > 𝘴𝘦𝘳𝘪𝘦𝘴 · 🚀𝘣𝘰𝘰𝘴𝘵

movies & series 🍿

@images · Post #1746 · 20.12.2024 г., 08:54

🍿 Superman: Legacy, the Rebirth of Hope ☀️ 📆Release: July 11, 2025 🎭Genre: #Action · #Fantasy · #Superheroes I just watched the trailer, and I’m filled with excitement. James Gunn’s Superman (Guardians of the Galaxy) focuses on kindness. David Corenswet (Hollywood) dons a colorful suit, flying and shielding a little girl. Rachel Brosnahan (The Marvelous Mrs. Maisel) brings a spark to Lois Lane, while Nicholas Hoult (Mad Max: Fury Road) promises a compelling Lex Luthor. Guy Gardner, with his bowl cut, couldn’t be more perfect. And Krypto, that dog, melts my heart. This movie looks like it’ll radiate optimism, reminding us that the world needs heroes who inspire. I can’t wait to see it. 🎉

12
ПретходнаСтраница 1 од 2Следна