TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #381 · 23 окт.

Установить свойства виджета в 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

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #mandeladay2025

当前筛选 #mandeladay2025清除筛选
Russian Consulate in Cape Town

@rusconct · Post #2843 · 18.07.2025 г., 17:30

🎙 Address by Ambassador of Russia to South Africa Roman Ambarov on the occasion of Mandela Day (July 18,2025) 💬 Dear friends, On July 18, we celebrate #MandelaDay – a holiday officially declared by the United Nations to honor the legacy of the South African statesman and one of the most outstanding champions of human rights, Nelson Mandela. The name Mandela is, without exaggeration, familiar to every person living in the former Soviet republics. For two decades, the slogan “Freedom for Mandela!” echoed through the media and peaceful demonstrations, while our country remained the only major power that consistently refused to engage with the criminal racist regime. 👉 The Soviet Union not only provided substantial financial support to the South African liberation movement but also assisted in training military personnel. Nelson Mandela praised #RussiaSouthAfrica ties in the times of the struggle against apartheid: "In a difficult time, Russia became a second home for many of us. Hundreds of young South Africans received an education here — an opportunity denied to them in their own country. Many of our cadres received military training that turned them into skilled fighters for freedom and justice. <...> For the help in liberating the entire South African nation from an inhumane system, we say from the bottom of our hearts: 'Spasibo bolshoe!'" [Thank you very much in Russian]. The friendship forged in those challenging times for South Africans continues to live on between our nations today — thanks in no small part to Nelson Mandela himself. At the heart of Mandela Day, as established by the UN, lies a principle of action, not words – people are encouraged to perform acts of charity and help those in need. The Russian Embassy in South Africa fully embraces this spirit: as part of this commemorative occasion, Russian diplomats will provide assistance and support to three South African children social facilities. 🤝 I extend my warmest congratulations to all our South African friends on this special day and wish you well-being, prosperity, and strength in pursuing your ideals. #MandelaDay2025