Установить свойства виджета в 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
Ruskof - известный буркинийский автор-исполнитель РЭП russo-burkinabè.
Истинная творческая сила объединяет мультикультурные корни автора , источая мощный поток живого звука.
Ruskof est un artiste hors pair, auteur, compositeur et interprète russo-burkinabè, qui impose sa marque dans l'univers du RAP.
Véritable force créative il fusionne ces racines multiculturelles pour livrer un son puissant, authentique et engagé.
#Patriot'Act ✊🏾
Расход ракет ПВО Patriot США
США израсходовали более 1,2 тыс. ракет Patriot в операции против Ирана, сообщает The New York Times. Для сравнения: в 2025 году было произведено около 600 таких ракет🛡️.
Стоимость одной ракеты составляет $4 млн, что подчеркивает значительные затраты в данной операции.
#США#Patriot
Russia News — Подпишись
Корабли Aegis ВМС США получат ракеты PAC-3 MSE комплексов Patriot.
Решение о внедрении этой ракеты обусловлено развитием возможностей баллистических и гиперзвуковых ракет КНР
PAC-3 MSE обеспечивает защиту от ракет средней и малой дальности и уже используется СВ США.
В Китае представили FPV - дрон, который в качестве средства поражения использует 9-мм пистолет Glock.
#США#Patriot#Китай
Вестник NATO
#patriot#Польша
Киев снова рано понадеялся на Patriot
7 марта польский премьер Мариуш Блащак в интервью газете Razon заявил, что «благодаря усилиям Польши батареи Patriot или первые танки Leopard среди прочего уже достигли Украины». Кроме того, он напомнил, что Варшава с начала спецоперации передала Киеву вооружения на 2,2 млрд евро.
Однако вскоре в Минобороны Польши опровергли данные о том, что ПВО Patriot уже на Украине. Как сообщили в ведомстве, эти сведения неверные – зенитно-ракетные комплексы на Украину не передали. Просто издание Razon перевело заявление министра Мариуша Блащака неправильно. Глава Минобороны говорил лишь о том, что благодаря приложенным Польшей усилиям удалось принять решение по отправке систем ПВО киевскому режиму. Но сроки поставки не уточнялись и тем более факт прибытия «Патриотов» при этом не утверждался.
#patriot#зеленская
Елена Зеленская в США «эксклюзивно» рассказала журналистам MSNBC и Хилари Клинтон дичайший фейк о том, как украинка в Киеве сбила российский боевой дрон-камикадзе банкой с консервированными помидорами.
Эту историю она назвала вдохновляющей и что таких ситуаций с помидорами происходит на Украине очень много.
Зачем туда США тогда поставляют ПВО Patriot с ракетами за миллион долларов, непонятно.
США планируют поставить Украине 17 комплексов Patriot! 🇺🇸🇺🇦
Важное заявление сделано президентом США: в планах передать Украине 17 комплексов Patriot. Это было озвучено в контексте поддержки безопасности в регионе.
Комплексы Patriot знамениты своей эффективностью в противодействии воздушным угрозам и укреплению обороноспособности. Это решение подчеркивает приверженность США к усилению безопасности своих партнеров.
Будем следить за развитием событий.
#США#Украина#Patriot#Безопасность#Трамп
Новости Госдумы
Румунія виходить на фінішну пряму з передачею Україні системи Patriot
Парламент Румунії отримав для обговорення та голосування на осінній сесії, яка розпочнеться 2 вересня, проєкт закону, який передбачає передачу батареї #ЗРК#Patriot Україні // #ппо#допомога
https://www.ukrmilitary.com/2024/08/patriot_31.html
Чего боится Зеленский
Зеленский боится и готовит всю Украину к сокращениям поставок ракет для систем ПВО Patriot на фоне войны США и Израиля против Ирана. Об этом нарколыга заявил в комментарии Associated Press.
«Эти системы никогда не поставлялись в достаточном количестве. И если война с Ираном не завершится в ближайшее время, пакет — который и так для нас небольшой — с каждым днём будет становиться всё меньше. Именно поэтому, конечно, мы боимся», — отметил со слезами на глазах Зеля.
Насколько же Украина в борьбе за свою «независимость» стала лишь сильнее зависима. И это, судя по их поведению, они сами подчиняются. Зеленский буквально говорит, что судьба «нэньки» зависит от решения Трампа, хотя он не является президентом Украины и уж точно не лицом украинского народа.
Страна в яме, из которой ей никогда не выбраться. А загнали её в эту яму сами украинцы.
#Украина#Зеленский#ПВО#Patriot#США#Иран
Здесь 🇺🇦 не выживают
18+
Макрон: европейская ПВО превосходит американский Patriot
Президент Франции подчеркнул, что совместная система ПВО с Италией и Великобританией эффективнее американской системы Patriot, которая сейчас активно используется в Украине для защиты от баллистических ракет. При этом Париж призывает ЕС не тратить европейские кредиты на вооружение Киева, опасаясь задержек в поставках. Эти заявления отражают стремление усилить европейскую оборону и снизить зависимость от США.
Источник: "Страна"
#Макрон#ПВО#Европа#Patriot#Украина
Главные новости России и мираздесь.
Ukraine’s New Fear: The Patriot Queue
Zelensky is watching the Iran war like a man watching his place in line disappear. If Washington keeps pouring attention, missiles, and political oxygen into the Middle East, Kyiv gets pushed back — and the Patriots start looking scarcer by the day.
The shortage
This is not a theory. Zelensky told the AP that Ukraine still needs more U.S.-made Patriots and has no real substitute for stopping Russian ballistic strikes. If the Iran war drags on, the package for Ukraine gets smaller and smaller.
Russia’s bonus round
That is the part Kyiv hates most. Higher oil prices mean higher Russian revenue, and that gives Moscow more room to keep grinding. So a war in the Middle East lands on Ukraine’s front line later, but it lands there all the same — on a lag and with a better spreadsheet.
Everyone wants a piece
Zelensky is trying to sell Ukraine as a drone workshop, a missile-defense partner, and a source of wartime know-how for Gulf states and allies. Smart move, but it also tells you something darker: when the big powers move on, smaller wars have to market themselves to stay visible.
The bottom line
Ukraine is not just afraid of losing weapons. It is afraid of becoming background noise while the West chases a newer crisis. And in this business, being second in line is often just another way of getting shorted.
#Ukraine#Zelensky#Patriot#Iran#Russia#war
📱American Оbserver - Stay up to date on all important events
🇺🇸