TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #381 · 23 окт.

Установить свойства виджета в 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

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #joyfulreunion

当前筛选 #joyfulreunion清除筛选

На просторах интернета поймала переводы двух новелл Фэйтянь Есяна (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#список