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

Резултати

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

Пребарај: #buff

当前筛选 #buff清除筛选
APKPure_Official

@apkpurechannel · Post #2653 · 16.09.2025 г., 07:16

🔈Arena Breakout: Infinite is launching on Steam! Amazing rewards are available immediately! 🎁 Win 10800 Bonds for free, plus grab exclusive bundles and special discounts! 🔗 Event link: https://s.buffbuff.com/2cUNTL 🎁 Koen,Basic Medical Supplies Choice Bundle, and Armor Bundle — limited-time gifts available on a first-come, first-served basis! 🔥Exclusive Discounts: Up to 30% OFF! Just $0.8 for 100 Bonds! Plus, get reward points cashback on every purchase! 🎉Free Lucky Draw: Enter for a chance to win 10800 Bonds, 2625 Bonds, 1040 Bonds, and more! ⏰ Event Duration: September 16–22, 2025 For any questions, please contact our customer support https://t.me/BUFFBUFFHELP2 #Buff#ArenaBreakoutInfinite#ABI

APKPure_Official

@apkpurechannel · Post #2382 · 21.04.2025 г., 14:00

📢Arena Breakout x BuffBuff, to celebrate the update of Season 8 (Duo 2 Gold), we're bringing an exciting top-up event to all players! 🔗 Event Link: https://act.buffbuff.com/activities/arena-breakout-update202504?utm_media=tvd&utm_source=tvd 🔥 Top up using the Buff APP and enjoy up to 55% off — for example, 66 tokens for only 41 RUB, plus cashback points! 🎁 Top up via the Buff APP to receive exclusive Arena Breakout gift packs, including Koen & KSS2 Tactical Helmet & Spartan B Body Armor. Limited supply — first come, first served! 🎉 Free lucky draw for amazing prizes! Win 6820 tokens. Class V Full Bundle. 675 tokens, and other luxury rewards — luck could strike anytime! ⏰ Event Period: April 21, 2025 – April 28, 2025 #BuffBuff#ArenaBreakout#Buff

APKPure_Official

@apkpurechannel · Post #2398 · 30.04.2025 г., 06:50

📢 Arena Breakout Infinite x BuffBuff: Congratulations on the official global top-up partnership!!! New season — unprecedented bonuses! Join the event now! 🔥 New Season Super Value: Up to 20% off across the board! Get 100 Bonds at an incredibly low price. Discounts on all products! 🎁 Spending Gift Pack Giveaway: Spend and get 「Koen, Basic Medical Supplies Choice Bundle, Basic Coupon Set」 for free! Limited quantity, first come, first served! 🎉 Free Lottery for Generous Gifts: 10800 Bonds, 2625 Bonds, 500 Points (worth $5) and other surprising gifts are available for free lottery. The next lucky one could be you! 🔗【Event Link】 https://act.buffbuff.com/activities/abi-ns01?utm_media=ABITVB ⏰ Event Time: 28.04.2025 - 05.05.2025​ ✅BuffBuff — a safe, officially approved platform. Top-ups are instant. No risk of account suspension. ✅ For questions — visit the BuffBuff channel: https://t.me/BuffBuff_TG #BuffBuff#ArenaBreakoutInfinite#Buff#ArenaBreakoutInfiniteNewSeason

SNOWBOARD with AlexGirnik

@alexgirniksb · Post #140 · 12.08.2022 г., 08:34

Ура. Я дома, я на связи! В ближайшее время всем отвечу☺️ Имеретинские были прекрасны, по всем связанным вопросам с маршрутом пишите в личку. Из нового подвернул ногу и теперь снова длительное восстановление ☹️ #mountain#lake#outdoor#outside#caucasus #alpina#buff