Установить свойства виджета в 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
🔴 Oligarhul Vladimir Plahotniuc a apărut pe lista #INTERPOL! 🔎
RISE Moldova a investigat afacerile familiei oligarhului fugar în Turcia 🇹🇷💰. Fiul cel mare al fostului lider democrat, folosind un alt nume, a înființat discret o companie la Istanbul, alături de un cetățean rus.
🕵️♂️ Săptămâna trecută, reporterii RISE Moldova au vizitat sediul firmei, iar în aceeași perioadă, INTERPOL l-a inclus oficial pe Plahotniuc pe lista persoanelor căutate internațional.
Citește investigația completă aici: 🔗https://www.rise.md/articol/afacerile-familiei-plahotniuc-in-turcia/
🙏 Îţi mulțumim că urmărești investigațiile realizate de RISE Moldova! O mare parte din munca noastră se bazează pe voluntariat. Cu puțin mai multe resurse, am putea face mult mai mult.
Susține-ne printr-o donație: https://www.rise.md/donatii
https://descubreenmexico.com/interpol-dara-concierto-gratuito-en-el-zocalo/?utm_source=banners&utm_medium=telegram&utm_campaign=tarde&utm_term=jorge
El próximo sábado 20 de abril, la banda Interpol dará un concierto gratuito en el Zócalo de la Ciudad de México.
En sus redes sociales, la banda neoyorquina escribió: “Estamos absolutamente electrificados de emoción al anunciar que daremos un concierto gratuito para nuestros fans mexicanos, y de hecho, para fans de todas partes, en el Zócalo en el corazón de la Ciudad de México el sábado 20 de abril de 2024”.
#interpol#cdmx
🌍В Африке арестованы 1209 киберпреступников в рамках операции Serengeti 2.0, координируемой Интерполом
Речь идет о 88 000 потерпевших лицах.
Операция продолжалась с июня по август 2025 года.
Она объединила следователей из 18 африканских стран для борьбы с киберпреступностью, включая программы-вымогатели, online -мошенничества, включая «нигерийские письма» (мошенничества с наследством), фишинг и компрометацию деловой электронной почты (BEC).
Все эти угрозы
отражены
в недавнем докладе об оценке киберугроз Интерпола в Африке.
👇В ходе операции в Анголе ликвидировали 25 нелегальных центров майнинга криптовалют.
Конфисковано оборудование стоимостью более $37 миллионов, которое правительство теперь планирует использовать для поддержки распределения электроэнергии в уязвимых районах.
👇В Замбии в ходе операции ликвидировали call-центр, который работал по схеме с инвестициями в криптовалюты и обманул более 65 000 жертв на сумму не менее $300 миллионов.
👇В Кот-д'Ивуаре ликвидировали транснациональную группу,которая работала по одной из самых старейших схем: с «нигерийскими письмами», обещая наследство в обмен на оплату пошлины.
Сумма профита киберпреступников составила $1,6 миллиона.
В прошлом году в ходе первой операции Serengeti Интерпол арестовал более 1000 человек.
#interpol#cybercrime#киберновости#киберпреступность#africa
Подписаться
Буст канала
¿Le llegó su hora? 🤯
Ex gobernador de Michoacán es buscado por la #Interpol👇
#SilvanoAureoles huyó con ayuda del #CJNG, dijó la Fiscalía de #Michoacán.
Por ello se emitió una ficha roja 🟥 para su localización y detención.
🌍В Африке задержали 260 человек за кибермошенничество и интим-шантаж
Речь о "сексторшн" и романтических аферах.
✅Спецслужбы 14 африканских государств при поддержке Интерпола арестовали 260 подозреваемых в киберпреступлениях, связанных с романтическими аферами (romantic scam) и сексуальным вымогательством, когда жертв шантажируют откровенными изображениями или видео (sextortion).
С 28 июля по 11 августа 2025 года в Африке
прошла
международная операция
Contender 3.0, направленная против транснациональных преступных групп, использующих цифровые платформы для мошенничества.
🔍В результате силовики стран Африки задержали 260 человек и изъяли более 1200 устройств.
«Следователи установили 1463 жертвы, связанные с мошенничеством, и оценили их убытки почти в $ 2,8 миллиона», - говорится в заявлении Интерпола.
🔍По словам директора отдела по киберпреступности Интерпола Нила Джеттона, жертвами становились люди разных возрастов, но "многие из этих афер затрагивают пожилых людей".
✍️Полиция выявила IP-адреса, цифровую инфраструктуру, домены и профили в соцсетях, связанные с мошенническими группировками, что позволило изъять USB-накопители, SIM-карты и поддельные документы, а также ликвидировать 81 киберпреступную группу по всей Африке.
🔍Рост онлайн-платформ открыл новые возможности для преступников, наносящих жертвам финансовый и психологический ущерб.
Когда мы просим страны назвать главную киберугрозу, они всегда указывают на online-мошенничество. С такими преступлениями крайне сложно бороться - миллионы людей ежедневно кликают на фишинговые письма”, - отметил Джеттон.
#interpol#cybercrime#africa#cooperation#киберпреступность
Подписаться
Буст канала
🔎 RISE Moldova a investigat afacerile familiei oligarhului fugar Vladimir Plahotniuc în Turcia. 🇹🇷💰
👨💼 Fiul cel mare al fostului lider democrat, folosind un alt nume, a înființat discret 🏢 o companie la Istanbul 🏙️ împreună cu un cetățean rus 🇷🇺.
📸 Săptămâna trecută, reporterii RISE Moldova au vizitat sediul firmei, iar în aceeași perioadă, Interpol 🚨 l-a inclus oficial pe Plahotniuc pe lista persoanelor căutate internațional 🌍🔍.
📲 Citește ancheta completă aici:
🔗👉rise.md/articol/afacerile-familiei-plahotniuc-in-turcia/
#RISEMoldova🕵️♂️#Investigație#Plahotniuc🚨#Interpol#Moldova🇲🇩#Corupție💰#Turcia🇹🇷