Установить свойства виджета в 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
Mission!! (Кива Ириэ)
Возвращаясь к новым интересным сериям манги, которые я читаю. Раз уж я недавно получила водительские права спустя год обучения (специально брала максимальные часы практики, так как я была ноль и учить меня больше некому), расскажу про актуальное.
«Mission!!» – манга Кивы Ириэ, дзёсэй-мангаки, в Японии известной своими историями о взрослых женщинах и о том, что же там после пенсии и в почтенном возрасте. Собственно, это причина, по которой за пределами Японии мангака уже известна не так хорошо и переводов ее манги (любительских и официальных) практически и нет.
Мити 54 года. На первый взгляд все в ее жизни хорошо. Как среднестатистическая женщина в глазах общества она «состоялась»: у нее сын-студент, любящий муж и бизнес – книжный магазинчик, доставшийся ей от родителей. Но, конечно, это лишь фасад. У Мити почти нет времени на себя. С утра до вечера она занята работой магазина, домом и уходом за старенькой мамой, которая то и дело устраивает ссоры и ведет себя как ребенок. Жизнь проходит в постоянном напряжении. Сын не помогает с хозяйством и почти с ней не разговаривает, а муж вроде как нашел себе другую женщину на стороне, но это не точно. И вот так, вроде окруженная семьей, Мити чувствует себя устало и одиноко. Она постоянно воюет со старушкой-мамой, которая отказывается идти к врачу. Вспоминает о том, как ее семья избаловала мужа еще в молодости, позволяя ему не особо напрягаться домашними делами и работой. А еще как она решила взяться за семейный книжный магазин после смерти папы.
Но однажды в магазинчик Мити приходит экстравагантная клиентка – высокая женщина в очень броской одежде, причем примерно возраста героини. Мити замечает на улице машину женщины – элегантную и красивую. Ее настолько впечатляет эта дама за рулем и то, как она выглядела, что Мити начинает думать о том, что хотела бы открыть для себя что-то новое в жизни. Почему бы не научиться водить машину? Это помогло бы ей в работе с развозкой заказов из магазина. Да и ощущение, что с машиной она будто бы станет свободнее, ее радует. И вот, собравшись духом, героиня сообщает домочадцам о своем намерении учиться в автошколе.
А дальше начинается тяжелая учеба, во время которой Мити еще будет сомневаться в выборе, пугаться инструкторов (оказывается, в Японии тебе дают возможность ездить с самыми разными каждое занятие), столкнется с предвзятым мнением о своих способностях, а в итоге встретит в автошколе ту самую прекрасную даму! Которая, по иронии судьбы, сама работает в автошколе инструктором…
Очень жизненная и интересная манга. Не припомню больше таких детальных работ об обучении вождению взрослой женщины. И читая мангу думаешь невольно: да! Похожее во время учебы было и у меня! Жаль, только работа пока без перевода и доступна только на японском. Буду с удовольствием дальше читать ^^
#2020е@shoujo_josei
Чудесные обложки манги hara "Okashi no ie no madam-san" ("Мадам из домика сладостей") о дружбе харизматичной женщины в возрасте, торгующей сладостями, и полной закомплексованной девушки.
☂️ Как-то писала об этой манге здесь.
#2020е@shoujo_josei
Копаюсь в новеньком для себя. Находки на познакомиться поближе.
Фукамати Аои - новая многообещающая звездочка седзе-манги. Рисует для "Lala", а прославилась своими ваншотами. Мангака родилась в 1999, обожает Достоевского и "Братьев Карамазовых".
🌟 Один из известных ваншотов - "Yane no ue no haitatsunin" (Курьер на крыше). Увы, пока без какого-либо перевода.
19-й век, Лондон. Героиня Лиз работает курьером на знатный дом и доставляет письма так, будто это спецзадания. Прыгает по крышам, превращая доставку писем в экшн. Однажды Лиз невольно втягивает в неприятности студента Джесса. Тот начинает учить её читать, и Лиз впервые в жизни чувствует тягу к обретению знаний. Но тут выясняется неприятное обстоятельство: умение читать мешает её работе, потому что профессия девушки связана с секретными письмами, понимать которые "опасно" для жизни.
🌟"Nazotoki gakusha to hinekure tenshi" (Академия загадок и вредный ангел) - одна из последних работ мангаки, где тоже видна некоторая тяга к европейскому сеттингу, пусть на этот раз персонажи и японцы.
В частной школе, построенной на базе готического особняка начала XX века, новенькая ученица Юдзуки в первый же день учебы теряется в лабиринтах учебного заведения и встречает "ангела" из школьных слухов — главного местного красавчика. Но бисенэн, как оказалось, не особо соответствует тому, что о нем навоображали девочки. Он грубоватый и ленивый, да и вообще, как выяснилось, остался в академии на второй год. Зато он обладает наблюдательностью и хорошей логикой, что помогает в детективных расследованиях Юдзуки, которой в школе нужно найти кое-что важное...
#2020е@shoujo_josei#Lala@shoujo_josei
Думаю, многие слышали про замечательную мангу "Toripan"("Птичий хлеб") о наблюдении за птицами (и не только). Если ещё не слышали, то от души советую почитать - фанаты переводят ее на русский.
Я относительно недавно тоже увлеклась птицами, поэтому манга о них меня очень интересует. Набрела на "Mainichi tori biyori" от Тобиты Хадзимэ. Выходит манга в онлайн-дзесэй журнале "Comic polaris" и ее пока что можно там читать бесплатно (на японском): https://comic-polaris.jp/toribiyori/
Каждая глава - короткая манга о наблюдении мангаки за той или иной птицей. Сопровождается небольшими энциклопедическими заметками. Очень интересно. В общем, советую всем поклонникам добуцу-манги и эссе-манги. Красота.
#2020е#Polaris
Новость-молния, которая точно войдет в историю седзе.
Впервые за22 года журнал "Ribon" смог обойти по продажам своего "соперника" - "Ciao", который все это время занимал первое место по тиражу и продажам.
То, что "Рибон" вырвался вперед, японские исследователи заметили еще летом, но теперь вот все вполне официально. На обложке свежего номера за январь значится, что "Рибон - седзе-журнал номер 1!".
Припоминаю то время, когда "Рибон" считался "библией 2,5 миллиона девочек" в конце 1980-х. Сейчас, конечно, охват не такой, но все равно приятно. Интересно, связано ли увеличение продаж и тиражей с тем, что спустя много лет снова выходят аниме-экранизации манги из журнала? Сейчас идет экранизация "Acro trip", очень хорошая. Ждем январь и выход аниме по самой популярной манге современного "Рибон" - "Honey lemon soda". Сегодня как раз в сети новая иллюстрация к грядущей экранизации появилась.
#Ribon#2020е#журналы@shoujo_josei