Установить свойства виджета в 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
#Concierto5#Emperador#Beethoven#MaurizioPollini#DanielePollini
Título:Concierto para piano y orquesta nº 5, en mi bemol mayor, op. 73, "Emperador"
Autor:Ludwig van Beethoven
Movimientos:
🎵 00:35 I. Allegro
🎵 21:00 II. Adagio un poco mosso
🎵 28:53 III. Allegro ma non troppo
Interpretación:
Orquesta Sinfónica de Galicia
Maurizio Pollini - Piano
Director:Daniele Pollini
Fuente:🎼
@ClasicaAlAtardecer
#Concierto5#Emperador#Beethoven#MaurizioPollini#DanielePollini
EL CONCIERTO PARA PIANO N.º 5 EN MI BEMOL MAYOR, OP. 73
El concierto para piano n.º 5 en mi bemol mayor, op. 73, conocido popularmente como «Emperador», fue el último concierto para piano del compositor Ludwig van Beethoven. Fue escrito entre 1809 y 1811 en Viena y está dedicado a Rodolfo de Austria, protector y pupilo de Beethoven. En 1812 Carl Czerny, alumno del compositor, estrenó la obra en Viena. El sobrenombre de «Emperador» no fue asignado por el propio Beethoven sino por Johann Baptist Cramer, el editor inglés del concierto.
El Emperador está dividido en los tres movimientos tradicionales de los conciertos:
🎵I. Allegro
🎵 II. Adagio un poco mosso
🎵 III. Rondo - Allegro ma non troppo
El primer movimiento se abre con un grandioso acorde de MI bemol para toda la orquesta, interrumpido por una serie de arpegios igualmente imponentes para el solo, sugiriendo una cadencia temprana. Pero en lugar de ello, Beethoven alterna pronunciamientos poderosos para la orquesta y el piano. La introducción terminó, el piano ofrece un tema amplio y arrogante del cual (y del subsiguiente, más tenue, segundo tema) Donald Francis Tovey escribió: "La orquesta no sólo es sinfónica, sino que está capacitada por la necesidad misma de acompañar ligeramente al solo para producir efectos orquestales etéreos queestán en una categoría bastante diferente de cualquier cosa en las sinfonías. Por otra parte, la parte solista desarrolla la técnica de su instrumento con una libertad y brillantez para la que Beethoven no tiene ocio en las sonatas y la música de cámara".
El segundo movimiento es una de las inspiraciones sublimes del compositor. Las cuerdas silenciadas tocan un tema de incomparable belleza y triste ternura, la piano respuesta en trillizos silenciosos y descendentes, creando una sutil tensión hasta que el tema queda totalmente expuesto. El carácter nocturno del movimiento se ve favorecido por un delicado equilibrio de suaves vientos de madera, cuerdas y el solo, a medida que la música se desvanece misteriosamente. Luego, sobre una nota de trompeta sostenida, el piano introduce, suave y tranquilo andante, el tema del rondó final. De repente, dramáticamente, el tema final piano se precipita, un grandioso y exuberante allegro.
El tercer movimiento sigue ininterrumpidamente al segundo y es un típico rondó italiano, de la forma (ABACABA). El tema principal es interpretado por el piano y luego respondido por la orquesta. Escalas en el piano introducen el segundo tema, que también es respondido por la orquesta. En la sección C, mucho más larga, se presenta el tema A en tres tonalidades diferentes.
En ella, Beethoven nos enseña el tema principal en tres tonalidades diferentes, demostración inequívoca de su pericia en el arte de la modulación y el juego formal. De igual modo, mención especial cabríahacer del final del concierto, donde un solitario dúo entre el solista y el timbal parece generar un diálogo a punto de detenerseen una mansa quietud que será rápidamente desquebrajada por el piano, cuyo explosivo final contagiará de su brioso ímpetu a toda la orquesta
Así pues, podemos afirmar sin miedo a caer en ninguna ponderación desmesurada que el concierto “Emperador” de Beethoven es mucho más que una obra icónica en el repertorio para piano y orquesta. Su quinto concierto no solo abre la puerta hacia el concierto romántico, sino que la traspasa. La nobleza de sus exhalaciones y el sentido triunfal de las mismas hacen que esta partitura siga deslumbrando doscientos años después de ser concebida. Un sentido triunfal que, paradójicamente, en su vida apenas hallamos; quizá por este motivo, Beethoven nos legó este concierto como el mejor de los consuelos para las derrotas de nuestra propia condición humana.
@ClasicaAlAtardecer
#Concierto5#Emperador#Beethoven#MaurizioPollini#DanielePollini
Título:Concierto para piano y orquesta nº 5, en mi bemol mayor, op. 73, "Emperador"
Autor:Ludwig van Beethoven
Movimientos:
🎵 00:35 I. Allegro
🎵 21:00 II. Adagio un poco mosso
🎵 28:53 III. Allegro ma non troppo
Interpretación:
Orquesta Sinfónica de Galicia
Maurizio Pollini - Piano
Director:Daniele Pollini
Fuente:🎼
@ClasicaAlAtardecer
#Concierto5#Emperador#Beethoven#MaurizioPollini#DanielePollini
EL CONCIERTO PARA PIANO N.º 5 EN MI BEMOL MAYOR, OP. 73
El concierto para piano n.º 5 en mi bemol mayor, op. 73, conocido popularmente como «Emperador», fue el último concierto para piano del compositor Ludwig van Beethoven. Fue escrito entre 1809 y 1811 en Viena y está dedicado a Rodolfo de Austria, protector y pupilo de Beethoven. En 1812 Carl Czerny, alumno del compositor, estrenó la obra en Viena. El sobrenombre de «Emperador» no fue asignado por el propio Beethoven sino por Johann Baptist Cramer, el editor inglés del concierto.
El Emperador está dividido en los tres movimientos tradicionales de los conciertos:
🎵I. Allegro
🎵 II. Adagio un poco mosso
🎵 III. Rondo - Allegro ma non troppo
El primer movimiento se abre con un grandioso acorde de MI bemol para toda la orquesta, interrumpido por una serie de arpegios igualmente imponentes para el solo, sugiriendo una cadencia temprana. Pero en lugar de ello, Beethoven alterna pronunciamientos poderosos para la orquesta y el piano. La introducción terminó, el piano ofrece un tema amplio y arrogante del cual (y del subsiguiente, más tenue, segundo tema) Donald Francis Tovey escribió: "La orquesta no sólo es sinfónica, sino que está capacitada por la necesidad misma de acompañar ligeramente al solo para producir efectos orquestales etéreos queestán en una categoría bastante diferente de cualquier cosa en las sinfonías. Por otra parte, la parte solista desarrolla la técnica de su instrumento con una libertad y brillantez para la que Beethoven no tiene ocio en las sonatas y la música de cámara".
El segundo movimiento es una de las inspiraciones sublimes del compositor. Las cuerdas silenciadas tocan un tema de incomparable belleza y triste ternura, la piano respuesta en trillizos silenciosos y descendentes, creando una sutil tensión hasta que el tema queda totalmente expuesto. El carácter nocturno del movimiento se ve favorecido por un delicado equilibrio de suaves vientos de madera, cuerdas y el solo, a medida que la música se desvanece misteriosamente. Luego, sobre una nota de trompeta sostenida, el piano introduce, suave y tranquilo andante, el tema del rondó final. De repente, dramáticamente, el tema final piano se precipita, un grandioso y exuberante allegro.
El tercer movimiento sigue ininterrumpidamente al segundo y es un típico rondó italiano, de la forma (ABACABA). El tema principal es interpretado por el piano y luego respondido por la orquesta. Escalas en el piano introducen el segundo tema, que también es respondido por la orquesta. En la sección C, mucho más larga, se presenta el tema A en tres tonalidades diferentes.
En ella, Beethoven nos enseña el tema principal en tres tonalidades diferentes, demostración inequívoca de su pericia en el arte de la modulación y el juego formal. De igual modo, mención especial cabríahacer del final del concierto, donde un solitario dúo entre el solista y el timbal parece generar un diálogo a punto de detenerseen una mansa quietud que será rápidamente desquebrajada por el piano, cuyo explosivo final contagiará de su brioso ímpetu a toda la orquesta
Así pues, podemos afirmar sin miedo a caer en ninguna ponderación desmesurada que el concierto “Emperador” de Beethoven es mucho más que una obra icónica en el repertorio para piano y orquesta. Su quinto concierto no solo abre la puerta hacia el concierto romántico, sino que la traspasa. La nobleza de sus exhalaciones y el sentido triunfal de las mismas hacen que esta partitura siga deslumbrando doscientos años después de ser concebida. Un sentido triunfal que, paradójicamente, en su vida apenas hallamos; quizá por este motivo, Beethoven nos legó este concierto como el mejor de los consuelos para las derrotas de nuestra propia condición humana.
@ClasicaAlAtardecer