Установить свойства виджета в 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
Еще про ИИ и когнитивные искажения
Всю ночь смотрела интервью Дурова перечитывала статьи про использование ИИ в науке, готовясь к упомянутой выше дискуссии и к докладам на двух конференциях.
В частности, обратилась к статье «Artificial intelligence and illusions of understanding in scientific research», вышедшей в марте в журнале Nature.
Авторы статьи, как водится, отмечают, что распространение ИИ-инструментов в науке рано или поздно приведет к тому, что мы будем производить больше знания (в том числе и «мусорного»), но при этом меньше понимать его источники и содержание.
Ученые делят применяемые сегодня исследовательские ИИ-инструменты на генеративные и предиктивные и на основе этого выводят 4 условных типа ИИ в современнойнауке:
▪️Оракул (генерация научных гипотез и study design)
▪️Суррогат (моделирование сложных системных процессов и сбор данных)
▪️Квант (анализ данных для исследования)
▪️Арбитр (рецензирование полученных результатов исследования)
Их совместное применение увеличивает некоторые эпистемические риски, связанные с подверженностью ученых «иллюзиям понимания» (в т.ч. иллюзиям объяснительной глубины, широты и объективности).
Таким образом, самый актуальный вопрос сегодняшнего дня не «Что даст ИИ науке?» а «Как у нас формируются когнитивные иллюзии нового типа, порождаемые использованием ИИ?».
Старые-добрые ловушки вроде «эффекта ореола», «эффекта фрейминга» и, конечно, «эффекта Элизы» уже давно изучены, а вот новые - пока не очень.
Пока новые исследования по этой теме пишутся, вот тут можно посмотреть легендарныйфайл с 176 когнитивными искажениями, с которыми мы сталкиваемся ежедневно. Скорее всего, применение ИИ просто усугубит многие из них.
#papers
Ученые из Института химии растворов им. Г.А. Крестова РАН методом твердофазного синтеза с механохимической активацией получили фотокатализатор, содержащий гетероструктуры Fe2TiO5. Они изучили механизмы образования кристаллических фаз, а также эволюцию структурных и физико-химических свойств полученных материалов при отжиге на воздухе и в азоте. На основании исследований фотокаталитической активности нанокатализаторов при разложении органического красителя родамина Б учеными был предложен механизм разделения зарядов в исследуемых керамических нанокомпозиционных материалах, связанный с различным поглощением фотонов и образованием электронно-дырочных пар.
Подробнее об исследовании см.: https://www.sciencedirect.com/science/article/pii/S0254058423002018?via%3Dihub
Ivanov K.V., Noskov A.V., Alekseeva O.V., Agafonov A.V. Effect of annealing conditions on the physicochemical and photocatalytic properties of a nanopowder based on Fe2TiO5. Materials Chemistry and Physics. 2023, Vol. 299, 127493.
https://doi.org/10.1016/j.matchemphys.2023.127493
#ИХРРАН#papers
#LLMs#papers
Tree of Thoughts: Deliberate Problem Solving with Large Language Models
Language models are increasingly being deployed for general problem solving across a wide range of tasks, but are still confined to token-level, left-to-right decision-making processes during inference. This means they can fall short in tasks that require exploration, strategic lookahead, or where initial decisions play a pivotal role.
✍ Princeton and Google DeepMind
-----
Main channel: @repo_science
Coupons: @freecoupons_reposcience
-----
Ученые ИХР РАН предложили способы идентификации энантиомеров противогрибковых препаратов класса 1,2,4-триазолов, которые можно будет применить для разработки лекарств.
Уникальность энантиомеров заключается в том, что они представляют собой зеркальные отражения друг друга и имеют близкие физические свойства, однако биологическая активность «правого» и «левого» энантиомеров не всегда одинакова. Например, один энантиомер в составе лекарства может оказывать терапевтическое действие, а другой - быть «пустышкой» или вызывать неблагоприятные побочные эффекты. Ключевая проблема фармацевтики состоит в том, чтобы определить, какой энантиомер или их смесь содержится в лекарстве.
Подробнее о способах решения этой задачи, предложенных в ИХР РАН, читайте на сайте: http://www.isc-ras.ru/ru/novosti/levyy-ili-pravyy, а также на портале "Научная Россия": https://scientificrussia.ru/articles/ucenye-vyasnili-kak-razdelat-pravye-i-levye-enantiomery-i-bezopasno-ispolzovat-ih-kak-osnovu-dla-lekarstv
#ISCRAS#papers#Media