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

Пребарај: #mayakovskaya

当前筛选 #mayakovskaya清除筛选

🚇Ⓜ️ Mayakovskaya: la estación del metro de Moscú que enamoró al mundo En el corazón de Moscú, bajo la plaza Triumfalnaya, se esconde una de las estaciones de metro más emblemáticas y bellas del planeta: Mayakovskaya. Inaugurada el 11 de septiembre de 1938, esta estación no solo marcó un hito en la ingeniería soviética, sino que se convirtió en un símbolo del arte y la visión futurista de la URSS. Diseñada por el arquitecto Alexéi Dushkin, Mayakovskaya fue la primera estación de tipo columna profunda en Moscú, ubicada a 33 metros bajo tierra. Su diseño rompió con los esquemas tradicionales: en lugar de los habituales pilares macizos, se optó por columnas delgadas de acero corrugado, un material hasta entonces reservado para la construcción de dirigibles. Esta elección, arriesgada para la época, fue defendida por Dushkin con el apoyo del ingeniero aeronáutico A. I. Putilov, quien ayudó a convencer a las autoridades de su viabilidad. Pero lo que realmente hace única a esta estación es su techo. Inspirado en la idea de “ventanas al cielo”, el artista Vladímir Frolov, siguiendo bocetos de Alexandr Deineka, creó una serie de 34 mosaicos (originalmente 35) que representan escenas de la vida soviética a lo largo del día: desde el amanecer hasta la noche. Esta obra se tituló “24 horas en la Tierra de los Soviets” y aún hoy deslumbra a los pasajeros. Durante la Segunda Guerra Mundial, la estación sirvió como refugio antiaéreo. El 6 de septiembre de 1941, en plena amenaza nazi, Iósif Stalin pronunció un discurso histórico ante los diputados del Sóviet de Moscú desde el vestíbulo central de la estación. Este hecho consolidó a Mayakovskaya como un símbolo de resistencia y unidad nacional. En 1939, su innovador diseño fue reconocido internacionalmente con el Gran Premio en la Exposición Universal de Nueva York, lo que la catapultó a la fama mundial. Hoy, más de 85 años después, sigue siendo una parada obligatoria para quienes visitan Moscú, no solo por su funcionalidad, sino por su belleza atemporal y su carga histórica. #MetroDeMoscú#HistoriaSoviética#Mayakovskaya#ArteSubterráneo#ArquitecturaRusa ¡Comparte nuestro contenido!❤️ 🖥https://vamosarusia.com 💬@vamosarusia