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

Резултати

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

Пребарај: #nem

当前筛选 #nem清除筛选
GitHub Trends

@githubtrending · Post #15003 · 28.07.2025 г., 12:30

#java#nem#nem_blockchain You can quickly build and run a NEM node using the NIS (NEM Infrastructure Server) project, which includes all necessary parts like core, deploy, peer, and nis modules. To build it, you need Java 11 or higher and Apache Maven. After building and testing, configure your node by placing property files in a folder named "staging" and start the node with a Java command allocating at least 6GB RAM. You can also set up a testnet node by creating a specific config file. This setup helps you run and manage a secure NEM blockchain node efficiently, supporting blockchain validation and network participation. Detailed docs and community support are available for help. https://github.com/NemProject/nem

Mirracoin Новости

@MirraChannel · Post #174 · 17.07.2024 г., 12:34

#блокчейн#ProofOfImportance#Blockchain#Crypto#Web3#PoI#база Что такое Proof of Importance (PoI) и как он работает? Интересуетесь криптовалютами и блокчейн-технологиями? Тогда вам 🤨 обязательно нужно узнать о Proof of Importance (PoI) — инновационном механизме консенсуса, который предлагает уникальные преимущества! 🔥Proof of Importance (анг. - доказательство важности) — это алгоритм консенсуса, впервые представленный платформой #NEM (New Economy Movement). Он оценивает "важность" каждого участника сети, чтобы определить, кто будет создавать следующий блок. В отличие от Proof of Work (PoW) и Proof of Stake (PoS), PoI учитывает не только количество монет на счету, но и активность пользователя в сети. ⚙️Особенности PoI: • Активность в сети: PoI поощряет активное участие в транзакциях, а не просто накопление монет. • Доверие и стабильность: Активные пользователи получают больший вес, что стимулирует участие и укрепляет сеть. • Справедливость: PoI снижает вероятность централизации, так как учитывается вклад каждого участника, а не только крупные счета. 📌 Для понимания работы консенсуса приведем простой пример. Представьте, что Алиса и Боб — участники сети. У Алисы на счету 1000 монет, но она не участвует в транзакциях, в то время как у Боба 500 монет, но он активно совершает транзакции. PoI считает Боба более важным 😎, так как он вносит больший вклад в жизнедеятельность сети. Благодаря этому, Боб имеет больше шансов создать новый блок 💡. ❗️Поддержите пост лайками 👍, если узнали что-то новое! @MirraChannel😎