Установить свойства виджета в 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
🔥📢MDGram V21📢🔥
#MDGram latest Version
🔥⭐⭐⭐⭐🔥
🟰🟰🟰🟰🟰🟰🟰🟰
🔥New MDGram V21
✅️Update Base Telegram 10.12.0
✅Fixed Crash in change font style
✅Fixed Crash in activity About MDGram
✅Fixed Crash when click in photo profile in Group chats
✅Fixed Small Bugs
🗯All Changelog:https://mdgram.app/
💬 Join to Channel ✅: https://t.me/mdgram_messenger
🟰🟰🟰🟰🟰🟰🟰🟰🟰
🟠🟠IMPORTANT🟠🟠
To download it is recommended to disable adblock
🔗📎Download Now📎🔗
https://mdgram.app
〰️〰️〰️〰️〰️〰️〰️〰️〰️
🔥🔥MDGram V20.5F VERSION FIX 🔥🔥
#MDGram latest Version
🔄🔄🔄🔄🔄🔄
❗️❗️❗️❗️
▪️IMPORTANT PLEASE UNINSTALL PREVIUS VERSIÓN MDGRAMV20
❗️❗️❗️❗️
🟰🟰🟰🟰🟰🟰🟰🟰🟰
🔥New MDGram V20.5F
✅FIXED ERROR WHEN JOINED CHANNEL OR GROUP
🗯All Changelog:https://mdgram.app/
💬 Join to Channel ✅: https://t.me/mdgram_messenger
🟰🟰🟰🟰🟰🟰🟰🟰🟰
🟠🟠IMPORTANT🟠🟠
To download it is recommended to disable adblock
🔗Download Now🔗
https://mdgram.app
〰️〰️〰️〰️〰️〰️〰️〰️〰️
✅✅MDGram V20✅✅
#MDGram latest Version
🔄🔄🔄🔄🔄🔄
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
▪️IMPORTANT PLEASE UNINSTALL PREVIUS VERSIÓN MDGRAMV19.
▪️Now MDGRAM V20 has a new package.
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
🟰🟰🟰🟰🟰🟰🟰🟰🟰
New from Telegram
✈️ The source code has been updated to Telegram version 10.10.1:
❤️New MDGram V20
° Updated Base
° New package of App: app.mdgram.android
° Edit stickers Enabled
° Fixed Error in Join to group or channel
° Fixed small Bugs
ℹ️ For see More Changelog here 👇👇
📝All Changelog:https://mdgram.app/
🎗Join MDGram community wing :https://t.me/addlist/VmgtOuYGe8VmMDcx
🟰🟰🟰🟰🟰🟰🟰🟰🟰
🟠🟠IMPORTANT🟠🟠
To download it is recommended to disable adblock
👇Download Now👇
https://mdgram.app
〰️〰️〰️〰️〰️〰️〰️〰️〰️
✅✅MDGram V19✅✅
#MDGram latest Version
🔄🔄🔄🔄🔄🔄
🟰🟰🟰🟰🟰🟰🟰🟰🟰
New from Telegram
✈️ The source code has been updated to Telegram version 10.5.0:
• Upgraded Calls;
• Thanos Snap Effect when Deleting Messages.
More details
New MDGram V19
° Scan QR code in chat menu context.
° Fixed Stories Public.
° Fixed Small Bugs.
ℹ️ For see More Changelog here 👇👇
📝 All Changelog: https://mdgram.org/changelog_mdgram/
📣 Join: @mdmods_you
💬 Join: @MDGramClub
🟰🟰🟰🟰🟰🟰🟰🟰🟰
🟠🟠 IMPORTANT 🟠🟠
To download it is recommended to disable adblock
GUIDE FOR DOWNLOAD
Here Click
👇Download Now👇
https://mdgram.org
〰️〰️〰️〰️〰️〰️〰️〰️〰️
[ Álbum ]
✅✅MDGram V18 ✅✅
#MDGram latest Version
🔄🔄🔄🔄🔄🔄
🟰🟰🟰🟰🟰🟰🟰🟰🟰
⭐️ Telegram
🔄Similar Channels
🔄 Reposting Stories
🔄 Video Messages on Stories
🔄 Profile Colors for user Premium
🔄 Wallpapers for Both 🔄 Sides For user premium
🔄 Story Stats for Channels
🔄 Custom Reactions for Channels
🔄 Code Highlighting in Messages
🔄 Improvements for Topics
🟰🟰🟰🟰🟰🟰🟰🟰🟰
✅ MDGram
➡️ Base Updated Telegram 10.3.2.
➡️ Now Home Ui is more ios and more Material You design.
ℹ️ For see More Changelog here 👇👇
📝 All Changelog: https://mdgram.org/changelog_mdgram/
📣 Join: @mdmods_you
💬 Join: @MDGramClub
🟰🟰🟰🟰🟰🟰🟰🟰🟰
👇Download Now👇
https://mdgram.org
〰️〰️〰️〰️〰️〰️〰️〰️〰️
✅✅MDGram V17✅✅
#MDGram latest Version
🔄🔄🔄🔄🔄🔄
🟰🟰🟰🟰🟰🟰🟰🟰🟰
⭐ Telegram
🔄Versión Base Telegram 10.0.9
🟰🟰🟰🟰🟰🟰🟰🟰🟰
✅ MDGram
🔘 Stories For All Users Carpeta
🔘 Fixed Entry ios and Material
⭐ Fixed Search Bar
⭐Fixed Small Bugs
ℹ️ For see More Changelog here 👇👇
📝Todo el registro de cambios: https://mdgram.org/changelog_mdgram/
📣 Únete: @mdmods_you
💬 Únase a: @MDGramClub
🟰🟰🟰🟰🟰🟰🟰🟰🟰
👇Download Now👇
https://mdgram.org
〰️〰️〰️〰️〰️〰️〰️〰️〰️
✳️MDGram V16 ✳️
#MDGram latest Version
🚀🚀🚀🚀🚀🚀
🟰🟰🟰🟰🟰🟰🟰🟰🟰
✅ Telegram
🆕Base Version Telegram 9.5.8
🆕Power saving mode
🆕Read Time in small groups
🆕Granular playback speed
🆕Auto-send invite links
🔄 And More features and Fix
🟰🟰🟰🟰🟰🟰🟰🟰🟰
✅ MDGram
☑️ Added in Settings Translate automatic thanks To Owlgram for Code.
☑️ Fixed Entry Chats ios and Material D.
☑️ Fixed Fonts
☑️ Fixed counter in actionbar Chat in ios Style
☑️ Fixed others Small Bugs
🔎 Apk verified : Check Here
ℹ️ For see More Changelog here 👇👇
📝All Changelog : https://mdgram.app/changelog_mdgram/
📣 Join: @mdmods_you
💬 Join: @MDGramClub
🟰🟰🟰🟰🟰🟰🟰🟰🟰
👇📥DOWNLOAD👇📥
https://mdgram.app
〰️〰️〰️〰️〰️〰️〰️〰️〰️
✅🆒 MDGram V15.5
#MDGram
🚀🚀🚀🚀🚀🚀
🆕 Base Updated Telegram 9.3.3
☑️ FIXED CRASH IN click Chat Secret
☑️ Readed Custom Settings for blur Efect
☑️ Fixed Floating Button in Topics Fragment.
☑️ Fixed Font Arabic
☑️ Fixed and redesign Icon launcher App
☑️ Fixed Bugs
🔍 Apk verified : Check Here
For see More Changelog here 👇👇
To review the changes in detail, visit the links below.
📝All Changelog : CHANGELOG
❗️MDGram Version Playstore current version is V13.5, updated when Google accepts the update ❗️
📣 Join:@mdmods_you
💬 Join:@MDGramClub
👇📥DOWNLOAD👇📥
🔎Link: https://rcmods-apps.xyz/mdgram/mdgram-messenger/
🔥📢MDGram V21📢🔥
#MDGram latest Version
🔥⭐⭐⭐⭐🔥
🟰🟰🟰🟰🟰🟰🟰🟰
🔥New MDGram V21
✅️Update Base Telegram 10.12.0
✅Fixed Crash in change font style
✅Fixed Crash in activity About MDGram
✅Fixed Crash when click in photo profile in Group chats
✅Fixed Small Bugs
🗯All Changelog:https://mdgram.app/
💬 Join to Channel ✅: https://t.me/mdgram_messenger
🟰🟰🟰🟰🟰🟰🟰🟰🟰
🟠🟠IMPORTANT🟠🟠
To download it is recommended to disable adblock
🔗📎Download Now📎🔗
https://mdgram.app
〰️〰️〰️〰️〰️〰️〰️〰️〰️
🔥🔥MDGram V20.5F VERSION FIX 🔥🔥
#MDGram latest Version
🔄🔄🔄🔄🔄🔄
❗️❗️❗️❗️
▪️IMPORTANT PLEASE UNINSTALL PREVIUS VERSIÓN MDGRAMV20
❗️❗️❗️❗️
🟰🟰🟰🟰🟰🟰🟰🟰🟰
🔥New MDGram V20.5F
✅FIXED ERROR WHEN JOINED CHANNEL OR GROUP
🗯All Changelog:https://mdgram.app/
💬 Join to Channel ✅: https://t.me/mdgram_messenger
🟰🟰🟰🟰🟰🟰🟰🟰🟰
🟠🟠IMPORTANT🟠🟠
To download it is recommended to disable adblock
🔗Download Now🔗
https://mdgram.app
〰️〰️〰️〰️〰️〰️〰️〰️〰️