Регулярно приходится писать и ревьюить код, где используется PySide2-6.
Заметил, что в подавляющем большинстве случаев настройка создаваемых базовых виджетов происходит через методы. Думаю, всем знаком такой способ.
Простой пример с кнопкой:
button = QPushButton("Click Me")
button.setMinimumWidth(300)
button.setFlat(True)
button.setStyleSheet("font-size: 20pt")
button.setToolTip("Super Button")
button.clicked.connect(lambda: print("Button clicked"))
Но есть и альтернативный способ - настройка через свойства. Это просто ключевые аргументы конструктора класса. Хоть они и не указаны в документации как аргументы, но они есть)
Этот код делает тоже самое но с помощью Property
button = QPushButton(
"Click Me",
minimumWidth=300,
flat=True,
styleSheet="font-size: 20pt",
toolTip="Super Button",
clicked=lambda: print("Button clicked"),
)
Где это может быть полезно
▫️ Это выглядит более аккуратно и коротко, уже повод использовать
▫️ Может использоваться в заполнении лейаута, когда нам не нужно никакое другое взаимодействие с виджетом и поэтому сохранять его в переменную не требуется. Например, лейбл или кнопка.
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
layout.addWidget(QLabel("Button >", alignment=Qt.AlignRight))
layout.addWidget(QPushButton("Click Me", clicked=lambda: print("Button clicked")))
widget.show()
Либо так
widget = QWidget(minimumWidth=400)
layout = QHBoxLayout(widget)
for wd in (
QLabel("Button >", alignment=Qt.AlignRight),
QPushButton("Click Me", clicked=lambda: ...)
):
layout.addWidget(wd)
widget.show()
▫️ Можно хранить настройки в каком-то конфиге или генерировать на лету, после чего передавать как kwargs.
kwargs = {"text": "Hello " * 30, "wordWrap": True}
my_label = QLabel(**kwargs)
Как получить полный список доступных свойств?
Эта функция распечатает в терминал все свойства виджета и их текущие значения
def print_widget_properties(widget):
meta_object = widget.metaObject()
for i in range(meta_object.propertyCount()):
property_ = meta_object.property(i)
property_name = property_.name()
property_value = property_.read(widget)
print(f"{property_name}: {property_value}")
#tricks#qt
🪐 On June 30, 1908, a small asteroid or comet exploded over Tunguska, Siberia, flattening 2,000 square kilometers of forest in an instant. Known as the Tunguska event, this airburst was caused by an object about 50–60 meters wide—large enough to release energy more powerful than the largest nuclear bomb ever detonated, yet leaving no impact crater. ✨
#asteroids⚡#danger⚡#Tunguska⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
☄️ ¿Qué cayó del cielo en Tunguska? El misterio que aún intriga a la ciencia
Un día como hoy, el 30 de junio de 1908, el cielo sobre la remota taiga siberiana se iluminó con un destello cegador. A las 7:17 de la mañana, un objeto desconocido atravesó la atmósfera y explotó sobre el río Podkámennaya Tunguska, en la actual región de Krasnoyarsk, Rusia. La explosión fue tan potente que arrasó más de 2.150 km² de bosque, derribando cerca de 80 millones de árboles como si fueran palillos de fósforo.
Lo más desconcertante del llamado evento de Tunguska es que, a pesar de su fuerza (equivalente a entre 3 y 15 megatones de TNT, unas mil veces más potente que la bomba de Hiroshima), no dejó cráter. Hoy se sabe que el objeto, probablemente un asteroide de unos 50-60 metros de diámetro, explotó a unos 5-10 km de altura, liberando su energía en el aire.
La onda sísmica fue registrada por estaciones en toda Eurasia, y la onda de choque dio la vuelta al planeta dos veces. En Europa y Asia, las noches siguientes fueron muy brillantes, incluso en Londres y Estocolmo se reportaron cielos iluminados por nubes noctilucentes, formadas por partículas en suspensión tras la explosión.
Debido a la lejanía del lugar y a las dificultades logísticas, la primera expedición científica no llegó hasta 1927, liderada por el geólogo soviético Leonid Kulik. Su equipo encontró árboles calcinados y tumbados radialmente desde un epicentro invisible. No hallaron fragmentos del meteorito, lo que alimentó teorías de lo más variopintas: desde ovnis hasta armas secretas. Sin embargo, la ciencia moderna ha confirmado que se trató de un airburst, una explosión aérea causada por un cuerpo celeste.
¿Podría repetirse? Sí. De hecho, en 2013, un meteorito explotó sobre Cheliábinsk, también en Rusia, causando más de mil heridos por vidrios rotos.
#Tunguska#HistoriaRusa#MisteriosDelEspacio#Meteoritos#CienciaYCuriosidades
¡Comparte nuestro contenido!❤️
🖥https://vamosarusia.com
💬@vamosarusia