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

Резултати

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

Пребарај: #houseofbigwins

当前筛选 #houseofbigwins清除筛选

😀 😀 😀 😀 😀 😀 😀 😙 😍 😗 😋 😝 🙃 😜 🤨 😜 💥 爆奖晒单 | ID 99***67 豪赢 99,875U! 运气爆棚还是技术在线?不重要——赢就完事了! 一转定乾坤,差点破十万大关,羡慕到想换号! 🎉 你也有可能成为下一个大奖得主! 🎮 马上开局 👉magic88.game #Magic88#爆奖晒单#高额奖励 #赢家风采#HouseOfBigWins #大奖时刻#下一位就是你#幸运玩家 ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ 🌟官网入口:✔️magic88.game 👈 🎉快点!晚一步,大奖就没了! 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🌐 Telegram 🌐Discord 🌐Facebook🌐Twitter X 🌐Instagram🌐Tiktok ✉️Luffa🔐SafeW

😀 😀 😀 😀 😀 😀 😀 😙 😍 😗 😋 😝 🙃 😜 🤨 😜 💥 爆奖晒单 | ID 99***67 豪赢 99,875U! 运气爆棚还是技术在线?不重要——赢就完事了! 一转定乾坤,差点破十万大关,羡慕到想换号! 🎉 你也有可能成为下一个大奖得主! 🎮 马上开局 👉magic88.game #Magic88#爆奖晒单#高额奖励 #赢家风采#HouseOfBigWins #大奖时刻#下一位就是你#幸运玩家 ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ 🌟官网入口:✔️magic88.game 👈 🎉快点!晚一步,大奖就没了! 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🌐 Telegram 🌐Discord 🌐Facebook🌐Twitter X 🌐Instagram🌐Tiktok ✉️Luffa🔐SafeW

😀 😀 😀 😀 😀 😀 😀 😙 😍 😗 😋 😝 🙃 😜 🤨 😜 💥 爆奖晒单 | ID 99***67 豪赢 99,875U! 运气爆棚还是技术在线?不重要——赢就完事了! 一转定乾坤,差点破十万大关,羡慕到想换号! 🎉 你也有可能成为下一个大奖得主! 🎮 马上开局 👉magic88.game #Magic88#爆奖晒单#高额奖励 #赢家风采#HouseOfBigWins #大奖时刻#下一位就是你#幸运玩家 ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ 🌟官网入口:✔️magic88.game 👈 🎉快点!晚一步,大奖就没了! 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🌐 Telegram 🌐Discord 🌐Facebook🌐Twitter X 🌐Instagram🌐Tiktok ✉️Luffa🔐SafeW

😀 😀 😀 😀 😀 😀 😀 😙 😍 😗 😋 😝 🙃 😜 🤨 😜 ⚽ 7月21日焦点战预告|俄超赛场再起硝烟! Gazovik Orenburg 🆚 CSKA Moscow 开赛时间:3:30 PM 莫斯科中央陆军来袭,奥伦堡主场能否力抗强敌? 赔率暗流涌动,战局风云莫测,今晚的对决不容错过! 📍 快来 Magic88 体育专区锁定比赛,全新赔率组合、进球时刻竞猜、首粒进球投注全面开放! 🎮 点燃竞猜热情 👉magic88.game #Magic88#俄超联赛#奥伦堡#莫斯科中央陆军 #今日赛事#足球竞猜#实时赔率#足球推荐 #Magic88Sports#HouseOfBigWins ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ 🌟官网入口:✔️magic88.game 👈 🎉快点!晚一步,大奖就没了! 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🌐 Telegram 🌐Discord 🌐Facebook🌐Twitter X 🌐Instagram🌐Tiktok ✉️Luffa🔐SafeW

😀 😀 😀 😀 😀 😀 😀 😱 最后一转出野牌!差点把手机摔出去! 本来想“随便玩一下” 结果最后一秒💥野牌登场!倍率爆拉! 情绪值📈📈📈 心跳值💯 胜率拉满! 你上一次压线翻盘是在什么时候? 🎰 留下你的“最后一转”神时刻 👇 #Magic88#最后一转奇迹#爆分警告 #情绪价值拉满#野牌来了#老虎机Meme #SpinItWinIt#HouseOfBigWins#Magic88玩家日常 ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ 🌟官网入口:✔️magic88.game 👈 🎉快点!晚一步,大奖就没了! 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🌐 Telegram 🌐Discord 🌐Facebook🌐Twitter X 🌐Instagram🌐Tiktok ✉️Luffa🔐SafeW

😀 😀 😀 😀 😀 😀 😀 😙 😍 😗 😋 😝 🙃 😜 🤨 😜 🎩Magic88 魔术师娱乐城|哈希智勇大闯关开启! 你是否拥有闯关的勇气与智慧? 在区块链构建的魔术世界中,一步步解锁命运,赢取高达 588 美金奖励! 🧠活动亮点一览: 🔗链上任务机制 — 完全去中心化,数据公开透明,绝无黑箱 🎯智力 + 运气双考验 — 每一道关卡都可能隐藏爆奖机会 🚀最高奖励 588 USDT — 勇者出发,即刻领取闯关回馈 ✨想挑战自己、赢取高额奖励?现在就加入魔术师的世界吧! 🎮立即参与 👉magic88.game #Magic88#哈希闯关#魔术师娱乐城 #链上挑战#588美金奖励#GameFi #智能任务#勇者行动#HouseOfBigWins #公平游戏#挑战奖励#Magic88活动推荐 ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ 🌟官网入口:✔️magic88.game 👈 🎉快点!晚一步,大奖就没了! 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🌐 Telegram 🌐Discord 🌐Facebook🌐Twitter X 🌐Instagram🌐Tiktok ✉️Luffa🔐SafeW

😀 😀 😀 😀 😀 😀 😀 😙 😍 😗 😋 😝 🙃 😜 🤨 😜 俄超激战来袭|锁定 7月20日焦点对决! 绿茵之夜,即将点燃 🔥 三场劲爆对决,谁能笑傲战场? 锁定 Magic88,提前预测你的胜者! 📅 7月20日 赛程速览: 🌙 8:30 PM|Nizhny Novgorod 🆚 Krasnodar 🌙 11:00 PM|Zenit St. Petersburg 🆚 Rostov 🌙 1:30 AM|Akhmat Grozny 🆚 Rubin Kazan 🏟️ 即刻进入 Magic88 体育专区,支持你心中的冠军球队 🎯 实时赔率更新、高倍组合投注、爆单就在今夜! 🎮 前往 👉magic88.game #Magic88#俄超联赛#足球竞猜#今日赛程 #俄罗斯足球#Zenit#Krasnodar#RubinKazan #爆单夜#实时赔率#竞猜推荐#Magic88Sports#HouseOfBigWins ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ 🌟官网入口:✔️magic88.game 👈 🎉快点!晚一步,大奖就没了! 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🤓 🌐 Telegram 🌐Discord 🌐Facebook🌐Twitter X 🌐Instagram🌐Tiktok ✉️Luffa🔐SafeW