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

Пребарај: #malovent

当前筛选 #malovent清除筛选
小喵的ACG黄油 (重开版)

@xiaomiaogame · Post #3407 · 12.03.2026 г., 12:47

MalO来了 MalOvent 邪恶 精饭汉化版 永远不要再忍受孤独的尴尬感受。MalO是一款令人兴奋且互动性强的体验,将让你全情投入并充满好奇。社交场合的焦虑可能会让人神经紧张,但只需几个小时的游戏时间,你就会很快忘记那些失望的痛苦情绪…… MalOvent是一款以SCP-1471为中心的成人恐怖视觉小说。在游戏过程中,你将面临一些选择,这些选择不仅对你这个主角至关重要,也对你所处的世界产生重大影响。你能在墙壁倒塌之前揭露真相吗? 说好的scp1471,我感觉这个在悬疑和设定方面写的比682那个好(好多科幻小说以及游戏梗),这里面还出现了玩具熊那个狐狸玩偶的姐姐,以及填了682那个世界灾难的坑是怎么回事 因为玩具熊那个勾连威廉阿夫顿的教授死了连锁反应导致男主他们的课程被助教作妖,笑死,你们这个地方真是人杰地灵 以及Katoa又吃瘪了,你真的有干成过什么事吗 四个结局cg全收集轻轻松松,有俩是跟女同学,一个跟女教授的 心跳计数者个人汉化 评分 作者 #NIGHT FOX Works #PC#SCP#SCP-1471 #恐怖#精翻#sex #MalO来了#MalOvent#邪恶 下载地址