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

Резултати

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

Пребарај: #ipidea

当前筛选 #ipidea清除筛选
V2EX

@pushv2ex · Post #201499 · 15.04.2026 г., 10:03

[推广] Kookeey 动态住宅 IP 实测:高纯净度、城市级定位,支持动态免费测试(全网底价) 做海外业务( TikTok 矩阵、电商运营、数据采集),最怕 IP 变脏导致封号。Kookeey 动态住宅 IP 作为目前市面上资源最纯净的方案之一,凭借其覆盖全球 180+ 国家的真实真人家庭宽带池,能够有效降低风控风险。 作为 Kookeey 官方授权代理,我这里不仅有最稳定的资源,更提供全网最具竞争力的代理价格,省去中间环节,直接让利给用户。 🚀 为什么选择 Kookeey ? ● 资源真实:180+ 国家/地区真人轮换 IP ,完美规避机房 IP 黑名单。 ● 技术优势:支持城市级定位与可变时限,满足精准化业务需求。 ● 高并发支持:网络架构经过深度优化,吞吐量极大,拒绝延迟卡顿。 ● 多协议兼容:完美适配 HTTP / HTTPS / SOCKS5 ,兼容各类指纹浏览器。 💰 价格与服务优势 ● 全网底价:比官网自行下单更具性价比的渠道价格。 ● 灵活计费:按需购买,大户另有专属折扣。 ● 免费测试:买不买没关系,先测质量。我提供 Kookeey 动态免费测试 流量包,好用再谈合作! ---------------------- 📩 快速联系 ● **微信 (WeChat)**:ipooipoo1188 ● Telegram: https://t.me/proxy2ip ---------------------- #Kookeey#动态住宅 IP #动态免费测试#住宅代理#海外代理#TikTok 代理 #数据采集#品牌截留#Socks5#ipidea#abcproxy#922proxy