Установить свойства виджета в 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
Nora-Desktop
Facebook, Instagram, Reddit, Threads and X in a single app. No ads. Features a deck view to easily browse multiple timelines. Linux, Android, macOS, Windows versions are available. (GNU GPL3)
Features
1. No ads
2. Download image
3. Download fb/ig/x video
4. Select text
5. Zoom
6. Remove tracking url query params
Supported SNS (Social-Networking-Sites)
1. Bluesky
2. Facebook
2. Instagram
4. LinkedIn
5. Reddit
4. Threads
5. TikTok
6. Tumblr
7. VK
8. X (Twitter)
How it works
Wrap the SNS websites in Android webview
Inject code to block ads
Get it on GITHUB : https://github.com/nonbili/Nora-Desktop
Get it on F-DROID (main repo) - https://f-droid.org/packages/jp.nonbili.nora/
Also available on gulag store
Disclaimer : we don't promote any of those zionist occupied censored websites and apps and are firmly against using them as they are nothing but #spyware designed to make people dumb
Windows reference manual
If you suddenly find you have Windows on your hard drive:
- dd if=/dev/zero of=/dev/[drive]
- burning causes pollution so just call an exorcist
General:
- https://rentry.co/fwt
- https://t.me/NoGoolag/2549
- https://tb.rg-adguard.net/public.php
- https://github.com/jebofponderworthy/windows-tools
- https://github.com/massgravel/Microsoft-Activation-Scripts
App managers:
- https://chocolatey.org
- https://scoop.sh
- https://store.rg-adguard.net
Telemetry:
-https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services
- https://docs.microsoft.com/en-us/windows/privacy/configure-windows-diagnostic-data-in-your-organization
- https://github.com/mirinsoft/debotnet
- https://github.com/Sycnex/Windows10Debloater
Security reference:
- https://docs.microsoft.com/en-us/windows/security
- Use Enterprise edition. It has a lot more security features.
- Use Virtualization Based Security to stop stuff like mimikatz or capcom.sys
- https://github.com/beerisgood/Windows10_Hardening
- https://www.microsoft.com/security/blog/2020/03/17/secured-core-pcs-a-brief-showcase-of-chip-to-cloud-security-against-kernel-attacks/
- https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/using-software-restriction-policies-and-applocker-policies
- https://docs.microsoft.com/en-us/windows/security/information-protection/bitlocker/bitlocker-group-policy-settings#a-href-idbkmk-unlockpol1arequire-additional-authentication-at-startup
- https://docs.microsoft.com/en-us/windows/security/threat-protection/microsoft-defender-atp/controlled-folders
-https://docs.microsoft.com/en-us/windows/security/threat-protection/microsoft-defender-application-guard/md-app-guard-overview
- User accounts is part of the windows security model, its better to use an admin account only when you need it rather than 24/7
#windows#spyware
🛑 WhatsApp alerted ~200 users targeted by a fake iOS app carrying #spyware, mostly in Italy.
The attack used social engineering to mimic #WhatsApp. Meta is acting against an Italian firm linked to the spyware.
🔗 Read details here → https://thehackernews.com/2026/04/whatsapp-alerts-200-users-after-fake.html
https://lnkd.in/e25HNh7A
Alhamdulillah, I finished writing this book in few days.
I wrote this book to help my friends:
Nurkhankyzy Aiya, Acute myeloid leukemia (AML).
and all those children who are fighting for their lives.
Why is the book called that? AIYA MMD - means Attack and Introduction or (Android and IOS), start Your Adventure in Mobile Malware Development. also AIYA means AIYA Nurkhankyzy.
I will be very happy if this book helps at least one person to gain knowledge and learn the science of cybersecurity. The book is mostly practice oriented.
Of course the book is not as big as my previous works, this is because firstly I needed to urgently start a fundraising campaign for the Aiya and secondly many things remain confidential (NDA)
Mobile malware - it's a constantly evolving battlefield. What you learned here is just the beginning. Tools change, defenses adapt, but the mindset stays the same: think like the adversary to build stronger defenses.
This book is dedicated to my wife, Laura, and my children, Yerzhan and Munira. I would like to express my deep gratitude to my friends and colleagues.
Special thanks to #Russian#hacking#community, Medet Turin 2600.kz, BlackIce #hackerspace from Almaty (Kazakhstan) and my friends from Middle East countries: Kingdom of Bahrain, Kingdom of Saudi Arabia, UAE.
All examples are practical cases for educational and research purposes only.
Book design by: Muhammad Patel
twitter: https://x.com/cocomelonckz/status/1924724518951457229
#hacking#mobile#malware#research#book#programming#android#ios#rat#spyware
https://lnkd.in/e25HNh7A
Alhamdulillah, I finished writing this book in few days.
I wrote this book to help my friends:
Nurkhankyzy Aiya, Acute myeloid leukemia (AML).
and all those children who are fighting for their lives.
Why is the book called that? AIYA MMD - means Attack and Introduction or (Android and IOS), start Your Adventure in Mobile Malware Development. also AIYA means AIYA Nurkhankyzy.
I will be very happy if this book helps at least one person to gain knowledge and learn the science of cybersecurity. The book is mostly practice oriented.
Of course the book is not as big as my previous works, this is because firstly I needed to urgently start a fundraising campaign for the Aiya and secondly many things remain confidential (NDA)
Mobile malware - it's a constantly evolving battlefield. What you learned here is just the beginning. Tools change, defenses adapt, but the mindset stays the same: think like the adversary to build stronger defenses.
This book is dedicated to my wife, Laura, and my children, Yerzhan and Munira. I would like to express my deep gratitude to my friends and colleagues.
Special thanks to #Russian#hacking#community, Medet Turin 2600.kz, BlackIce #hackerspace from Almaty (Kazakhstan) and my friends from Middle East countries: Kingdom of Bahrain, Kingdom of Saudi Arabia, UAE.
All examples are practical cases for educational and research purposes only.
Book design by: Muhammad Patel
twitter: https://x.com/cocomelonckz/status/1924724518951457229
#hacking#mobile#malware#research#book#programming#android#ios#rat#spyware