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 слични објави

Пребарај: #caseanalysis

当前筛选 #caseanalysis清除筛选
English Law Report

@enlawreport · Post #1844 · 26.12.2025 г., 05:20

👉 Ко мне обратился клиент с запросом, который на первый взгляд выглядит как техническая проблема. Сайт проекта уже более семи месяцев находится под санкциями Google, трафик фактически обнулен. За это время было подано 12 запросов на пересмотр, все безрезультатно. Именно эта цифра сразу меняет оптику. Когда попыток много, а результата нет, проблема почти никогда не лежит на поверхности. Сейчас проект находится на стадии переговоров. Мы обсуждаем рамку мандата и глубину возможного участия. Формально работа еще не началась, но предварительный анализ показывает, что это не SEO-кейс в узком смысле и не история про отдельные ошибки. Это спор на стыке договорных ожиданий, внутреннего нормотворчества цифровой платформы и доказательной стратегии. В таких ситуациях Google действует не как сервис, а как квазисудебный орган. Со своей логикой, стандартами убеждения и крайне чувствительным отношением к нарративу. Предыдущие подходы строились по принципу устранили проблемы, отправили запрос, ждем. Алгоритмически и институционально это не работает. То, что сейчас обсуждается с клиентом, — переход от реактивной модели к стратегии «докажи и восстанови». Фиксация фактов, причинно-следственных связей, последовательности ошибок и, главное, правильная реконструкция истории для адресата. Не отчёт ради отчёта, а аргументированная позиция. Если мы договоримся о сотрудничестве, этот кейс станет хорошим примером того, как выстраивается правовая и квазиправовая стратегия вне суда, но по всем канонам юридического мышления. От момента входа в проблему до выбора точки давления. Без раскрытия сторон и деталей, но с разбором логики, методологии и ошибок. Если вам интересна логика таких кейсов и то, как выстраивается стратегия до первого формального шага, подписывайтесь на канал и следите за апдейтами. Участникам English Law Mentorship буду разбирать этот кейс глубже — как учебную модель работы с цифровыми платформами, доказательствами и нарративом. #EnglishLawReport#LegalStrategy #DigitalLaw#PlatformGovernance #RegulatoryDiscretion#QuasiJudicial#CaseAnalysis #LegalThinking#StrategicLaw #BeyondCourt