Установить свойства виджета в 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
Кажется, нас все же ждут "Записи об усмирении чудищ эпохи Тяньбао" Фейтянь Есяна(2017, 221ch) в печатном виде!
Boys and Books принесли еще одну долгожданную новость! На этого автора давно пора было обратить внимание. Как-то я делала небольшую подборку его работ со ссылками, не проходите мимо
#China#novel#FeiTianYeXiang#TianBaoFuyaoLu#анонсы
Несу добрую весть поклонникам новелл Фэйтянь Есяна
Завершен перевод "Динхайских хроник иного мира" (Dinghai Fusheng Lu / 定海浮生录).
Описание: 300 лет назад мир погрузился в магическое безмолвие. Бессмертные практики, волшебное оружие, магические силы и безграничная духовная Ци в одночасье исчезли во мраке, и все маги стали простыми смертными.
К счастью, в темную ночь все же вспыхнул Сердечный Свет, озарив огромное пространство вокруг. 16-летний экзорцист, которому суждено дожить лишь до 20, отправился в путешествие по восстановлению запечатанной Ци. Ему осталось всего четыре года. (2019, 138ch)
Полный русский перевод: главы 1-26, главы 27-138
Оригинальный текст
Полный английский перевод
Маньхуа (онгоинг). К сожалению, после выпуска 9 тома было принято решение закрыть проект
Артер 千二百 (Lofter)
#China#novel#FeiTianYeXiang#DinghaiFushengLu#список
Уже послезавтра этот канал вернётся к привычному и приличному книжному контенту. А пока любуемся обложками первых двух томов "Динхайских хроник" Фэйтянь Есяна (он же Arise Zhang) от 苍顾行 (cangguxing).
#China#novel#FeiTianYeXiang#DinghaiFushengLu#SevenSeas
Наконец-то Seven Seas показали обложку первого тома новеллы "Динхайские хроники" Фэйтянь Есяна (он же Arise Zhang) от 苍顾行🌙低浮上 (cangguxing).
Выход первого тома ожидается в мае. Книга (с мерчем и без) доступна для предзаказа на Logobook.
#China#novel#FeiTianYeXiang#DinghaiFushengLu#SevenSeas
Какая атмосферная обложка у первого тома "Тяньбао" Фэйтянь Есяна от Ruthie (kkcoocool)... Опять Seven Seas нагибают мои планы по экономии средств.
Выход ожидается в феврале 2025 г.
#China#novel#FeiTianYeXiang#TianBaoFuyaoLu#SevenSeas
Поймала на просторах интернета обложки англоязычного печатного издания новеллы "Властвовать в пору смут" Гу Сюэжоу (2014, 75ch+8ex) и вспомнила, что есть еще одно издательство (я о нем регулярно забываю), которое занимается официальным переводом китайского веб-даньмэя.
Via Lactea — независимое канадское издательство, которое сосредоточено на продвижении bl-новелл разных, в том числе не самых раскрученных писателей. Все английские переводы выполняются с использованием полной версии романа, предоставленной издательству автором. В их портфеле уже есть следующие лицензии: "To Rule in a Turbulent World" Гу Сюэжоу (псевдоним Фэйтянь Есяна), "Rose and Renaissance" Чжи Чу, "Lip and Sword" Цзинь Шисы Чай, "The Missing Piece" Куньи Вэйлоу и другие.
Выглядит довольно симпатично... Надо бы постучать в Логобук, тем более "Розы и Ренессанс" (1, 2 и 3 части) и "Недостающая часть" (1 том) у них уже доступны для заказа (хотя цена там настолько кусается, что я прыгала от счастья, когда смогла достать файл "Недостающей части").
#China#novel#FeiTianYeXiang#ToRuleInATurbulentWorld#список
Уже послезавтра этот канал вернётся к привычному и приличному книжному контенту. А пока любуемся обложками первых двух томов "Динхайских хроник" Фэйтянь Есяна (он же Arise Zhang) от 苍顾行 (cangguxing).
#China#novel#FeiTianYeXiang#DinghaiFushengLu#SevenSeas
На просторах интернета поймала переводы двух новелл Фэйтянь Есяна (Fei Tian Ye Xiang / 非天夜翔) из одной вселенной, коими спешу с вами поделиться
✦ Радость встречи / Joyful Reunion / 相見歡 (2016, 228ch) jjwxc древнекитайский сеттинг, боевые искусства, драма
Описание: Его звали Дуань Лин. Сколько себя помнил, он всегда был сыном из беднейшего рода. Уже в детстве он терпел множество лишений, пока человек по имени Лан Цзюнься не забрал его. Он накормил Дуань Лина, дал ему образование, новый дом, и обещал, что как только зацветут персиковые деревья, отец мальчика вернётся за ним.
И отец вернулся. Он оказался гораздо удивительнее и могущественнее, чем мог представить Дуань Лин. Теперь мальчик не был безродным ублюдком без кола и двора.
Целая империя должна была лежать у его ног.
Но в неспокойные времена, когда во всех четырех концах света зажглись маяки войны, его отец сказал, что у каждого есть предначертанная ему судьба, и их судьба — это путь гуманного правления, вот почему они никогда не могли довольствоваться своим маленьким уголком мира.
Им было суждено... нести ярость захваченной империи, терпеть боль утраты родины; жить так, как того требовала сама судьба.
Оригинальный текст
Полный английский перевод (foxghost)
Русский перевод (онгоинг, wattpad Holylance, осталось где-то 40 частей)
✦ На горе есть деревья / O, the Mountains Have Trees / 山有木兮 (2020, 200ch) jjwxc древнекитайский сеттинг, боевые искусства, повседневность, приключения
Описание: На горе есть деревья, на деревьях есть ветви.
Я люблю его, но князь об этом не знает
Княжество Юн направило лучшего убийцу Поднебесной, непревзойденного Гэн Юаня, дабы он сыграл на цине на встрече представителей четырех княжеств, которые решились выступить вместе в поход против Юн. Враги умылись кровью, и Поднебесная погрузилась в хаос, ускоривший падение императорского дома. Тревожные огни сигнальных башен заполыхали по всему Шэньчжоу.
Спустя три года судьба свела вместе двух мальчиков необычного происхождения — Цзян Хэна и Гэн Шу. Шесть великих убийц наделили их удивительным мастерством, и дети вступили на трудный путь, ведущий к объединению Срединных земель.
Горные пики оседают, в зимнем небе гремит гроза, небеса сливаются с землей - но за ушедшей весной приходит новая весна, снег все равно тает и уходит под землю, а персики цветут так же пышно, как и прежде...
Оригинальный текст
Английский перевод (онгоинг, Chickengege, доступны 103 главы)
Русский перевод (онгоинг, wattpad Tatta2018 — переводчик Динхайских хроник)
Арт к новелле "На горе есть деревья". Cr. 舟行绿水
#China#novel#FeiTianYeXiang#JoyfulReunion#ShanYouMuXi#список
Обложки двух новелл Фэйтянь Есяна от Seven Seas
🤩Riverbay Road Men’s Dormitory [Мужское общежитие № 7 на Цзянвань-роуд] от Tamtam (dahliadenoire). Запланированы 2 тома. Выход первого намечен на апрель. Оба тома уже доступны для предзаказа на Logobook (том 1 // том 2)
🤩Astrolabe Rebirth [Перезагрузка астролябии] от SSShark (Shark2049). Запланирован 1 том. Выход намечен на июль.
#China#novel#FeiTianYeXiang#RiverbayRoad#AstrolabeRebirth#SevenSeas
Новости издательства Комильфо:
🤣"Усмиритель душ" Прист
Выйдет в трёх томах. Первый том находится на стадии перевода. Выход из печати запланирован на декабрь.
Художник обложек, суперобложек и элементов внутренего оформления – huaepiphany
Художник внутренних иллюстраций – Пихта
🤣Издательство приобрело права на издание новеллы "Динхайские хроники" Фэйтянь Есяна (2019, 138ch)
🤣Показали обложку первого тома новеллы "Сквозь облака" Хуай Шан (материковая версия). Выход из печати запланирован на ноябрь.
Предзаказ откроется 30.08 в 14:00.
Художники издания: neesawahh, Pirate Ru-Ru
#China#novel#Priest#Guardian#ZhenHun#FeiTianYeXiang#DinghaiFushengLu#HuaiShang#PoYun#анонсы