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 слични објави

Пребарај: #cuitocuanavale

当前筛选 #cuitocuanavale清除筛选
Мудрая птица 🦜

@mudrayaptitsa · Post #11703 · 24.03.2026 г., 13:27

On 23 March 2026, Ambassador of Russia to South Africa Roman Ambarov attended a Day of Reflection on Resistance and Liberation Heritage in commemoration of the Battle of Cuito Cuanavale at Freedom Park in Pretoria. The keynote address was delivered by Deputy Minister of Sport, Arts and Culture of South Africa, Hon. Ms Peace Mabe. Among the participants were Hon. Ms Nomvula Mokonyane, First Deputy Secretary-General of the African National Congress, as well as heads of diplomatic missions from Cuba, Angola, and Namibia, ANC representatives, and veterans of the Battle of Cuito Cuanavale. 🎙 Addressing the participants, Ambassador Roman Ambarov emphasized that the Battle of #CuitoCuanavalewasa turning pointof the Civil War in Angola. The victory of the People’s Armed Forces of Liberation of Angola contributed directly to the peace process in Namibia and helped pave the way for the eventual liberation of South Africa. “Cuito Cuanavale became a symbol of resistance against oppression. It demonstrated that even in the face of overwhelming force, the determination of people fighting for their rights cannot be defeated. It was here that the tide began to turn - not only in Angola, but across the region. The role played by the Soviet Union in supporting Angola during this difficult period remains an important part of this history. Through the various means of assistance and political support, it contributed to strengthening the defence of Angola’s sovereignty. Soviet advisers worked alongside Angolan and Cuban forces, sharing knowledge, resources, and a belief in a just cause. But what truly defined this moment was solidarity to fight together against the colonial yoke. It was the understanding that the struggle of one people is the concern of all humanity. The fight in Angola echoed the voices of those resisting apartheid in South Africa and colonial rule in Namibia. It was one struggle, fought on many fronts,” the Russian Ambassador said. As part of the event, Roman Ambarov laid wreath to the Russian section of the Wall of Names in memory of Soviet military specialists who participated in conflicts in Southern Africa. ℹ️ The Battle of Cuito Cuanavale (August 1987 – March 1988) was a decisive engagement of the Angolan Civil War and a crucial step in the struggle for independence of the countries of Southern Africa from colonialism and apartheid. During the battle, the People’s Armed Forces of Liberation of Angola backed by #USSR, #Cuba, People’s Liberation Army of #Namibia, African National Congress (#ANC) and others defeated the combatants of the Angolan “UNITA” party and the racist regime of the Republic of South Africa supported by the US. #RussiaSouthAfrica#AmbassadorAmbarov