Регулярно приходится писать и ревьюить код, где используется 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
Наконец-то заказал себе нормальный моник Samsung на 24" в пару к одному из этих старичков, больше никаких пыток для глаз..
HDD BarraCuda 1TB в #пк и контейнер для 2.5", чтоб после прокачки одного из местных ноутов обзавестись халявным внешним HDD на пару соток гиг 🧐
и замену своим умирающим мейзу POP - недавно вышедшие Realme Buds Air, позже отпишу как они..
#device
Решил поделиться своей историей болезни (телефонов).
Встречайте! История телефонов
(#истории#device)
Всё началось где-то в классе так 3-4, тогда папа отдал мне свой телефон купив себе новую моторолу.
Я достаточно поздно получил свой первый телефон в отличии от сверстников, но позже.. Я начал стремительно обгонять, меняя их как перчатки
Вот краткий гид по прошлому моих средств связи:
–> Siemens M55 без камеры (утопленник сельского туалета в лагере)
–> Nokia 1110 оранжевый от мамы с чб экраном
–> МТС 236 за 199грн... производства ZTE (лето 2011)
–> Nokia C1-01 с камерой, бт, ЖА(Б)ВА ИГРАМИ и печеньками
–> LG GS290 на жаве, но с емкостным экраном и неубиваемым метал корпусом, МАШИНА!
Где-то в это время мне купили первый и единственный планшет на Android (за 999 грн), так что моё знакомство с мирком Fruit Ninja и подобного начался именно здесь, а не с следующего телефона.
К слову говоря, я всё ещё не могу вспомнить куда же он делся ._.
–> LG Optimus L3 [E400] (первый андроид тел.)
–> LG Optimus L5 [E612] (был слит брату как и предыдущий по низкой цене)
–> Samsung Galaxy S4 Active (единственный флагман что у меня был, куплен в конце 2013. Украден во время лыжного курорта в Словакии)
–> Sony Xperia M2 (куплен в первой половине 2015 года, утопленник Средиземноморья в Израиле)
–> Microsoft Lumia 430 (уже не помню куда он делся, но в те времена обновился до Win10M даже)
–> Doogee X5 (сука ненавижу)
–> LG Spirit [H422] (купила себе маман, я на второй день обменялся на дужи :) С ним я начал флексить в кастомы и патчи из-за нехватки встроенных 8gb)
–> Motorola Moto G3 [2015] (выпущен на 5, прошит на 8, а сейчас прошивки с 9 андроидом есть, п-поддержка)
–> Xiaomi Redmi 4 Prime [markw] (матрица пошла гулять, при этом стекло тел не пострадало, пострадали матрица и накленное стекло. Меняли раза 3 так как был брак тача, в итоге в срочном порядке перешёл на next ph.)
–> Xiaomi Mi A1 [tissot] (ааа, первое сяоми комьюнити, скорблю)
–> Xiaomi Redmi Note 5 [whyred] (комьюнити топовое, люблю этих ребят, лучшие знакомства в интернете. Уже олд, менял батарею, смаковал разные ром'ы)
–> Poco X3 NFC [surya] <– im here