Установить свойства виджета в 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
#зарисовка
главные герои романов му сули в школьном ау! часть 1
чу сы — учитель математики, которого боятся ученики, особенно, если у него плохое настроение. если оно хорошее, ученикам может повести
писать одну проверочную работу вместо трех в разных форматах.
саэ ян — учитель физкультуры. на своих занятиях очень строго следит, чтобы каждый ученик выполнял все нормативы, если они перед этим испортили настроение его учителя чу. если настроение у учителя чу хорошее, он может и закрыть глаза на их халатное отношение к его предмету.
сюэ сянь — учитель истории. очень интересно ведет уроки, ученикам каждый раз хочется его слушать. может подшутить над студентами в свободное от занятий время. любит обсуждать сплетни, особенно с учителем янем (см. 2 часть (пишется))
се вэнь — учитель искусства. свои уроки ведет достаточно монотонно, от чего ученики быстро засыпают на его уроках. в сердце есть любимчики, и не скрывает этого.
продолжение следует… (пишите в ком свои идеи на счет других персонажей, может добавлю их в следующей части.)
#blacksky#coppercoins#panguan
Издательство О2 [Кислород] показало обложку первого тома новеллы "Медные монеты даруют миру покой" Му Сули
🪙 Художник — 骨kotsu骨
🪙 Софт-тач обложка с тиснением фольгой, иллюстрированный форзац, чёрно-белые сюжетные иллюстрации в блоке
🪙 Перевод с китайского — ColdEyed
🪙 Материковая версия в двух томах
Выход из печати намечен на август 2025 г.
#China#novel#MuSuLi#CopperCoins#анонсы#Кислород
Пришло время вернуться к нашим опросам. У меня назрели два вопроса, которые в каком-то смысле тесно связаны друг с другом, поэтому в этот раз долгого перерыва не будет.
Я уже как-то поднималатему спойлеров в этом канале, поскольку, выдавая те или иные умозаключения касательно сюжетов, ты волей-неволей становишься тем самым человеком, которого особо чувствительные к спойлерам люди мечтают сжечь на костре. Порог терпимости к спойлерам у всех разный, поэтому современному книжному блогеру нужно заранее обложиться дисклеймерами, чтобы не дай бог не проговориться, что Троя пала, убийца – дворецкий Раскольников, а Анна Каренина предпочла Вронскому поезд.
С другой стороны, есть и такие люди, для которых спойлеры – это маячки, по которым они определяют, в какой стороны искать их сюжет, а от какой истории следует держаться на расстоянии пушечного выстрела (теги – отдельный интересный вопрос, который мы когда-нибудь точно поднимем).
А еще в природе есть такие чудо-юдо звери (как ваш спойлероносный админ), которым спойлеры не могут испортить впечатление от сюжета, потому что читают они несколько иначе, а знание некоторых обстоятельств даже помогает снизить уровень читательской тревожности (факт, доказанный экспериментально!) и позволяет обратить внимание на детали.
Напоминаю, что в опросах я часто даю ироничные ответы, которые каждый волен интерпретировать так, как ему угодно. Если вы не нашли для себя приемлемый ответ – я буду рада вашей собственной точке зрения в комментариях, ибо она для меня – на вес золота.
К посту прикреплен арт 狐八姥姥, который тоже можно воспринимать как спойлер, хотя что может быть интригующе, чем приключение бесхребетного дракона и беспамятного монаха в изложении прекрасной Му Сули? (новелла «Медные монеты»)
#админ_анализирует#China#novel#MuSuLi#CopperCoins#art
И еще одна порция новостей с Призрачного города от издательства Кислород: приобретены права на издание двух новелл Му Сули!!!
🤣"Медные монеты даруют миру покой" (2016, 103ch)
Релиз ожидается в 2025 г. (материковая версия)
Новелла выйдет в двух томах в прекрасном переводе от ColdEyed
🤣"Первоклассный адвокат" (2018, 215ch)
Всего ожидается 4 тома в переводе ulik3221. Материковая версия
Обложки от SSDWSV. В первый том войдут главы 1-49, релиз намечен на ноябрь 2024 г.
🤣Порадовали апдейтом касательно работы над первым томом новеллы Мао Ни "Да будет ночь" (пер. Ксении Высоцкой). Релиз намечен на ноябрь 2024 г.
Cr. 栋33栋
#China#novel#MuSuLi#CopperCoins#FirstClassLawyer#MaoNi#Nightfall#анонсы