Установить свойства виджета в 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
В Липецкой области сотрудникам бюджетных учреждений рекомендовали пройти на портале «Госуслуги» опрос об осенних довыборах в Госдуму. Помимо осведомленности о факте голосования и желания в нем поучаствовать у граждан интересуются, за кого из кандидатов они намерены голосовать. В избиркоме говорят, что опрос не нарушает закон, а в Минцифры уверяют, что доступа к персональным данным его заказчики не получат, — Коммерсант. #briefly
На российском рынке возникает дефицит полуприцепов-рефрижераторов для автотранспорта, в которых возят продукты питания, лекарства и другие товары, требующие низких температурных режимов. По оценкам, рынок прицепов-рефрижераторов в России в докризисное время достигал 4000 шт. в год. Россия была крупнейшим рынком Европы по продаже полуприцепов и занимала 15% в регионе EMEA (Европа, Ближний Восток, Африка). Но после введения антироссийских санкций весной 2022 г. объем импорта техники стал снижаться, – Ведомости. #briefly
EUreporter: После начала СВО официальные лица США и НАТО подчеркнули важность защиты Западных Балкан от российского вмешательства и пагубного влияния. Россия использует свои энергетические и природные ресурсы в качестве геополитического инструмента, одновременно поддерживая правые политические партии и ультраправые группы в регионе. Сербия является ближайшим европейским союзником России, а в Черногории, напротив, в 2016 году произошла попытка переворота при поддержке РФ. Как выяснилось потом, попавший под санкции российский олигарх расширял свое влияние в стране от имени Кремля. Албания и Северная Македония были менее уязвимы для российского вмешательства из-за их ограниченной зависимости от российских энергоносителей и отсутствия культурных связей. Однако Россия пытается оказывать злонамеренное влияние на эти страны с помощью различных средств, таких как финансирование оппозиционных партий и нападения на сотрудников служб безопасности и политических деятелей. Имеются доказательства того, что российские бизнесмены, связанные с Кремлем, осуществляли платежи жене бывшего президента Албании. В Северной Македонии российские агенты пытались завербовать бывших и действующих военных и сотрудников министерства внутренних дел для продвижения российских интересов. #briefly@briefsmi
Ведомости: Россиянам предложили дать возможность ежегодно оценивать депутатов всех уровней, мэров и губернаторов (для них существует правительственная система KPI) с помощью портала «Госуслуги». Такой законопроект в среду, 15 марта, планирует внести в Госдуму фракция «Новые люди». Депутаты предлагают внести поправки в закон о статусе сенатора и депутата Госдумы, в закон об общих принципах организации публичной власти в субъектах и в закон о местном самоуправлении. #briefly
#briefly
О чем говорил Токаев в Жетысу с общественностью и что пообещал? Рассказываем👇
- Объяснил, почему появился новый регион: чтобы повысить эффективность работы местных органов управления;
- Велел провести геологоразведку области, ибо ее недра могут хранить от 50-100 тысяч тонн лития. Для их разработки нужны инвестиции;
- Поручил интегрировать Е-очереди на погранпунктах «Алаколь» и «Нұр жолы», для разгрузки грузового авто;
- Заявил о создании лаборатории, аккредитованной по стандартам Китая. Она увеличит экспорт в КНР;
- Поручил срочно запустить Аксуский сахарный завод. И привлечь других инвесторов, если нужно;
- Порекомендовал изучить голландский опыт: с территорией в 3 раза меньше, чем Жетысу, войти в топ-3 мировых экспортеров агропромышленной продукции;
- Считает, что стандарты «халал» пора внедрять в отечественном агропроме и на зерновые, овощи, фрукты и прочую снедь.
#планы
- Построить газопровод «Талдыкорган – Ушарал», он обеспечит 3 района голубым топливом, где живут 150 тыс. человек;
- Отреставрировать 15 аварийных мостов в регионе;
- Проложить дорогу к самому высокому водопаду «Бурхан Булак» в Центральной Азии;
- Достроить +3 новые школы к тем 12-ти, что уже строятся;
- Создать филиал крупного зарубежного технологического вуза;
- Построить модульные комплексы под медпункты в 40 сёлах до 2024 г.;
- Возвести лыжно-биатлонный комплекс для подготовки чемпионов и роста тур-привлекательности области.
@sluhmaker
😊 These two adverbs seem similar, but they’re quite different! 💡 Here’s a quick tip from Sian! 🤓 Now, complete the sentence:
George only came in _____ to pick up his jacket - he’d left it here yesterday.
1. briefly
2. shortly
🤔 Want to learn more? 🤩 Here’s a useful lesson on adverbs. Link in bio.
#learnenglish#englishtips#ELT#ielts#grammar#adverbs#briefly#shortly#confusingwords