Регулярно приходится писать и ревьюить код, где используется 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
🔥AMV Time
👈 انیمه هایی که در ساخت این AMV استفاده شده است:
Demon slayer
Naruto shippuden
Bungou Stray Dogs
One Piece
Jujutsu Kaisen
Boruto
Sword art online
Attack on Titan
Seraph of the end
Scissors seven
Fog hill of five elements
Akame ga kill
Fate zero
Fate Grand order- Saber war
Fate/stay night Heavens Feel
👈آهنگ استفاده شده در این AMV :
Fall Out Boy - Light 'Em Up
🔐Credit: Devpa (YouTube)
#AMV
🆔@AWrecommend
🔥AMV Time
🎬 انیمه هایی که در ساخت این AMV استفاده شده است:
▪️ Komi Can't Communicate▪️ Charlotte ▪️ Darling In The Franxx ▪️ Kimi no Nawa ▪️ 5 Centimeter Per Second ▪️ The Anthem of The Heart ▪️ Tokyo Ghoul ▪️ A Silent Voice ▪️ Kyoukai no Kanata ▪️ Your Lie In April ▪️ Rascal Does not Dream of Bunny Girl Senpai ▪️ Hibike Euphonium ▪️ Akebi's Sailor Uniform ▪️ To All You I Love ▪️ Wonder Egg Priority ▪️ Super Cub ▪️ I Want to Eat Your Pancreas
🎼آهنگ استفاده شده در این AMV :
Rosa Linn - Snap
🔓Credit: Lun4ki (YouTube)
🔥#AMV
✈️@AWrecommend
Подростком я посмотрел фильм "Воскрешая мертвецов" режиссера Мартина Скорсезе с Кейджем в главной роли, и он настолько меня "пропер" (Ой, да будто здесь кому это неизвестно), что я создал единственный в своей жизни #AMV, выложил разок в вк и про него забыл, а сегодня он мне его подкинул.
#скораяпомощь#фильмы#ночь
БИТВА ЗА ДОНБАСС(до 24.02.2022)
(ПОЛИНА ГАГАРИНА - "КУКУШКА") (реж. АЛЕКСЕЙ КОРАБЛИН)
Съёмка 2015-2016-го года. О том, что реально происходило в ДНР и ЛНР. О наших территориях, которые стучались уже с 11-го мая 2014-го года, к нам, домой. В Россию.
Покажите это тем, кто говорит, что русских на Донбассе защищать не надо было, покажите это тем, кто предлагал отказаться от русских людей на Донбассе.
Покажите это тем, кто спрашивает, зачем нужно было СВО.
#История#Русская_История
#Не_забудем_не_простим
#Мы_помним#Русские_люди
#AMV#Донбасс#Русская_Весна
Архив Мысли | РН
(8 октября 2022 года)