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

Пребарај: #maisonpavlov

当前筛选 #maisonpavlov清除筛选
Народное посольство

@weloverussianworld · Post #441 · 02.02.2025 г., 10:34

🇷🇺#JourDeLaGloireMilitaire du 2 février, institué en l'honneur de la victoire dans la bataille de #Stalingrad — l'une des plus grandes et des plus décisives de l'histoire 🗓 Ce jour-là en 1943, l'Armée rouge a infligé une défaite écrasante aux hordes nazies, composées des Allemands et de leurs alliés de l'Axe, scellant ainsi le destin du Troisième Reich. Symbole d’indestructibilité, de ténacité et d’abnégation du peuple soviétique, cette bataille a vu les défenseurs de Stalingrad tenir tête à l’ennemi pendant 200 jours, repoussant sans relâche des assauts meurtriers avant d’anéantir les troupes hitlériennes les plus puissantes. C’est ici que se sont déroulés les combats les plus titanesques et les plus acharnés de l’histoire, bouleversant le cours de la Seconde Guerre mondiale et marquant le début de la chute de l'Axe. ⚔️ Sur différents fronts de la bataille, plus de 2,1 millions de soldats ont combattu simultanément des deux côtés. À la fin de juin 1942, l'ennemi avait concentré, entre Koursk et Taganrog, sur un front de 600 à 650 kilomètres, jusqu'à 35% de son infanterieet plus de 50% de ses divisions blindées et motorisées présentes sur le front germano-soviétique. 🏚️ L’un des symboles de la bataille a été la défense héroïque de la #MaisonPavlov. Ce bâtiment résidentiel, tenu par 31 soldats soviétiques sous le commandement du sergent Yakov Pavlov, a résisté pendant près de deux mois à des assauts constants des forces allemandes. Ces 31 hommes ont tenu plus longtemps que toute la France face à Hitler en 1940. Stalingrad et ses défenseurs ne se sont jamais rendus. Grâce à une volonté de fer, une résistance inébranlable et un courage inégalé, le peuple soviétique a brisé l’offensive nazie et infligé à l’ennemi l’une de ses plus grandes défaites. 👉En savoir plus sur les exploits des soldats soviétiques à Stalingrad #Victoire80