Установить свойства виджета в 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
#AESinfo | #Mali🇲🇱👎🇲🇷#Mauritanie
L’armée malienne aurait recouvert une superficie de 150 Km soit une dizaine de villages à la ligne frontalière avec la Mauritanie.
Depuis quelques jours, plusieurs sources locales rapportent que dans le cadre de la reconquête des territoires, les forces armées maliennes viennent de récupérer environs 150 Km soit une dizaine de villages appartenant au Mali mais sous la gouvernance mauritanienne depuis des années.
Il s’agirait entre autres de : Gogui, Gouwène Modibougou, Bouli, Boulouli, Labidi, Ségué, Banna, Madina, Katar).
Un exploit qui témoigne de la montée en puissance de l’armée et s’inscrit dans le cadre de l’opération « Dougoukolokô », qui vise la poursuite de la reconquête du territoire national et le retour effectif de l’administration publique sur l’ensemble du territoire. Une promesse des autorités de la transition.
Moussa Maïga, AESinfos
Ps : Image d’illustration générée par IA.
#AESinfo | #Mali🇲🇱🤝🏾🇲🇷#Mauritanie
Mission diplomatique cruciale en Mauritanie : Renforcement des liens et gestion des enjeux migratoires
Une délégation de haut niveau du Mali, conduite par le Ministre des Maliens Établis à l’Extérieur et de l’Intégration Africaine, Mossa Ag Attaher, s'est rendue en République Islamique de Mauritanie le jeudi 27 mars 2025. Cette mission, comprenant également le Ministre des Affaires Étrangères et de la Coopération Internationale, Abdoulaye Diop, le Ministre Directeur Général de l’ANSE, le Général de corps d’armée Modibo Koné, le Délégué Général des Maliens de l’Extérieur, et le Directeur des Affaires Juridiques du Ministère des Affaires Étrangères et de la Coopération Internationale, a été accueillie par le Président mauritanien, Son Excellence Mohamed Ould Cheikh El Ghazouani.
Retrouvez l’article complet sur
Twitter X @AESinfos
Facebook https://www.facebook.com/share/16F7kC9aDZ/?mibextid=wwXIfr
🇲🇱🇩🇿#Mali • #Algerie • #Defense • #Sécurité : Ce 02 mai 2026, le Mali quitte le #CEMOG (Comité d'état-major opérationnel conjoint), structure de coopération sécuritaire créée en 2010 regroupant l'#Algérie, le #Mali, la #Mauritanie et le #Niger. Basé à #Tamanrasset (Algérie), il vise à coordonner la lutte contre le #terrorisme (#AQMI) et le crime organisé dans la région du #Sahel.
Ce retrait est non seulement une réponse diplomatique au double jeu de l’Algerie avec les ennemis terroristes du Mali mais également un acte de souveraineté et de réalignement géopolitique, motivé par des frictions directes avec Alger et la volonté de rompre avec des mécanismes jugés inefficaces ou biaisés.
Il reflète la nouvelle orientation des autorités maliennes et sahéliennes vers l’autonomie sécuritaire.
Boubou Babou Doucouré
Chevalier de l’Ordre national
Citoyen malien engagé 🇲🇱
#URGENT📣‼️ Afrique : nos peuples menacés par un projet de grand remplacement financé par le Moyen-Orient.
Pendant que nous concentrions notre lutte contre l’impérialisme euro-occidental, un autre projet d’emprise politico-islamiste et idéologique progresse en silence sur notre continent. Aujourd’hui, certains pays du Moyen-Orient Émirats arabes unis, Arabie saoudite, Qatar idéologiquement négrophobes, étendent leur influence en Afrique pour contrôler des territoires, exploiter nos ressources et remodeler nos identités au profit de leurs ambitions religieuses et politiques. Leur objectif : un véritable grand remplacement des populations noires d’Afrique.
La Ligue de Défense Noire Africaine (LDNA) alerte et dénonce ce danger depuis des années. Il est temps que nos États prennent des mesures concrètes pour protéger nos peuples, nos terres et nos cultures.
Le Soudan, historiquement noir, en est l’exemple le plus brutal et tragique : des milices barbares djindjawui arabes, armées et financées par ces pays du Moyen-Orient, exterminent les communautés noires de leurs terres ancestrales, provoquent l’exode, fragmentent nos sociétés et effacent des cultures millénaires. Ces violences s’inscrivent dans une stratégie expansionniste qui ne se cache même plus, et ce, avec la complicité implicite de certains gouvernements occidentaux. L’objectif est clair : envahir l’Afrique et contrôler ses peuples par la violence et la terreur.
Autrefois, ils venaient s’imposer sur nos terres l’épée à la main. Aujourd’hui, rien n’a changé : ils poursuivent le même objectif, mais avec des kalachnikovs, en armant et en finançant des groupes armés et des organisations terroristes pour prendre le contrôle de nos territoires. Jusqu’à quand resterons-nous silencieux face à cela ?
Et ce danger ne se limite pas au Soudan ou au Sahel. En Mauritanie, les populations noires autochtones subissent toujours un système d’apartheid silencieux : épuration raciale, esclavage moderne, ségrégation sociale et restrictions à la liberté de mouvement. Une élite héritée d’une domination arabo-berbère perpétue un ordre fondé sur la discrimination et la marginalisation des Noirs mauritaniens dans leur propre pays.
Il est temps que les Africains se réveillent. Nos terres, nos spiritualités et nos droits fondamentaux sont à nouveau ciblés. Ces forces s’infiltrent jusque dans nos villages et nos maisons, détruisant nos objets cultuels et culturels, filmant et diffusant sur les réseaux nos traditions qualifiées de “Sheitan”. Leur objectif : nous diviser, nous affaiblir et s’implanter sur nos territoires en effaçant ce qui fait notre force et notre identité.
Face à cette menace, que devons-nous faire ? Rester silencieux ? Espérer un miracle ? Non. Nous devons défendre nos racines, notre souveraineté et notre dignité. Toute attaque contre un peuple noir africain est une attaque contre l’ensemble du continent.
L’Afrique ne sera plus jamais un terrain de domination pour une conquête arabo-islamique.
#RazziaDuMoyenOrient#ExpansionAraboIslamique#Soudan#Mauritanie#Golfe#Négrophobie#GrandRemplacement#Impérialisme#AfriqueMenacée#ConquêteTerritoriale
📲 Analyse complète et décryptage sur ma chaîne WhatsApp. 👉🏽https://whatsapp.com/channel/0029VbB8HYgFnSzIMQZl0113
EEgountchi Behanzin – Commandant en chef de la LDNA – Analyste géopolitique, internationaliste et leader panafricain
@egountchibehanzinTV