Установить свойства виджета в 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
⚡️⚡️⚡️🚩🇻🇳
И вот! Свершилось. Историческое заявление сделали сегодня сопредседатели #KCK!
✔️ Долгое время хранив молчание, о ситуации с протестами вокруг политики #ДПК и клана Барзани в Южном Курдистане заговорили представители Союза общин Курдистана (Koma Civakên Kurdistanê - #KCK ✪).
ᅠ
В распространенном сегодня заявлении представители #KCK заявили о том, что #ДПК стала частью политики геноцида, проводимой турецким государством и призвали #ДПК немедленно прекратить поддерживать удары Турции по Курдистану в какой бы то ни было форме и сосредоточиться на восстановлении национального единства.
Примечательно, что данное заявление сделано было сегодня непосредственно после того, как спецслужбы Барзани выдали представителям Национальной разведывательной организации (Milli İstihbarat Teşkilatı - #MİT) на границе провинций Духок и Шырнак (со стороны северного Курдистана) гражданина по имени Муса Гюзель, арестованного ранее в Шеладизе #Asayiş.
⚡️⚡️⚡️ Спецслужбы Австрии предотвратили план Национальной разведывательной организации Турции 🇹🇷#MİT (Milli İstihbarat Teşkilatı) по физическому устранению курдской активистки, депутата австрийского парламента от партии зеленых уроженки Турции Бериван Аслан.
Задержанный австрийской службой безопасности агент #MİT Файйаз О. на допросе рассказал, что турецкие спецслужбы готовились устранить действующего австрийского политика, которая придерживается левых взглядов и выступала о необходимости демократизации Турции. Скорее всего это теперь не может, а вероятнее всего станет поводом для дипломатического скандала.
#TürkPolitikası#MİT#МИТ#ТурецкаяРазведка#TürkiyeGündemi
🆔@jiyana_nu
Стали известны подробности разоблачения в Кобани агента турецкой разведки
Задержанный в Кобани Силами внутренней безопасности Asayış агент турецкой разведки MİT Сердар Абди дает показания.
Тридцати лет от роду уроженец деревни Донхиз кантона Кобани с 2013 по 2019 год работал в Турции (Северном Курдистане), в 2017 году был завербован MİT (Milli İstihbarat Teşkilatı) в городе Урфа. «Али» таково было его кодовое имя для разведки.
Из показаний Сердара Абди явствует, что в основном интерес для MİT представляли руководители автономной администрации Рожавы и их связи с курдскими комитетами в Турции. Особенно, с активистами партии HDP (Halkların Demokratik Partisi). Именно такие задачи ставили сотрудники турецкой разведки своему агенту по кличке «Али».
Отдельный интерес для турок представляли участники курдского движения в Сирии, которые после 2017 года переехали в Турцию, в особенности, в курдские регионы. По наводке Абди, MİT в Турции был задержан его же двоюродный брат - житель Кобани Михемед Абдулкадир Абди. И все это за 6 тысяч $, которые он получил от своих кураторов.
Предатель действовал в паре с другим агентом - Шюкрю Беркелем, тоже выходцем из Кобани. Всего их доносы послужили причиной для задержания в Турции почти 100 сирийских курдов.
В 2019 году турки отправили Сердара Абди назад в Кобани с заданием собирать информацию про военных командиров и гражданскую администрацию. С заданием он «справился», сделав большой объем фотографий военных объектов, адресов жительства командиров и рядовых бойцов YPG. Все эти сведения шпион передал в MİT.
Проявил себя Сердар Абди и как классический вербовщик для турецкой разведки. Зная, насколько курдская молодежь, вынужденная эмигрировать в Турцию на заработки, нуждается в средствах, предлагал им сотрудничать с MİT за деньги.
#SuriyeSavaşı#YPG#MİT#ТурецкаяРазведка#МИТ#Kobane
@mahkorkmaz
🤔 Зачем нужны хакеры и хитроумные схемы. Чтобы разоблачать врага, достаточно просто иногда его мониторить)) Итак, на фото турецкие 🇹🇷 националисты, сторонники ультра-националистической фашистской организации #Bozkurt (Серые волки 🐺). Фото сделано предположительно в 2016-2017 году в Менбидже.
По другим данным, за достоверность которых мы не готовы поручиться (а источник пожелал не называть себя), на фото изображены офицеры Национальной разведывательной организации (#MİT) Турции, прибывшие в город после его «тихого» слива Турции боевиками запрещенных джихадистов из ИГИЛ.
#Bozkurt#Ülkücü#Münbiç#İşidTerör#SuriyeSavaşı#StopTerror
🆔@jiyana_nu
Барзанисты встали на тропу войны...
Минувшая неделя ознаменовалась беспрецедентным для медиа-пространства выступлением Демократической партии Курдистана (ДПК) и представителей Регионального правительства Курдистана против движения «апочистов» в лице Союза общин Курдистана (Koma Civakên Kurdistan – KCK) и Рабочей партии Курдистана (РПК). Нельзя сказать, что ситуация стала неожиданностью для Кандиля, и, в первую очередь, это связано с тем, что в «грязных политических» технологиях всегда применяется принцип «лучшая защита – нападение». А РПК давно не питает иллюзий насчет того, каково истинное отношение клана Барзани к партии, поэтому всегда готова принять удар.
Какова истинная подоплека начатой барзанистами кампании против курдского движения? Что и кто стоит за хаотичными информационными атаками ДПК? К чему они приведут в ближайшем будущем? И, наконец, какой возможный ответ приготовит РПК для главной протурецкой политической силы внутри курдского мира?
На все эти вопросы авторский коллектив канала Jiyana_Nû постарается ответить в еженедельной редакционной статье, предложенной Вашему вниманию >>>
#Barzani#Talabani#PKK#KCK#HPG#KDP#PUK#ДПК#ПСК#Горан#Erbil#Duhok#Suleymaniyah#Qandil#BashureKurdistan#Başur#Parastin#MİT#Asayiş#ПротестыБашур
🆔@jiyana_nu