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

Пребарај: #a2a

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

@githubtrending · Post #15283 · 09.11.2025 г., 14:30

#go#a2a#agents#agents_sdk#ai#aiagentframework#gemini#genai#go#llm#mcp#multi_agent_collaboration#multi_agent_systems#sdk#vertex_ai The Agent Development Kit (ADK) for Go is an open-source toolkit that makes it easy to build, test, and deploy smart AI agents using the Go programming language. It lets you create simple or complex agent workflows, use ready-made or custom tools, and run your agents anywhere, especially in cloud environments. With ADK, you get full control, flexibility, and the ability to scale your applications, making it faster and simpler to develop powerful AI solutions for real-world tasks. https://github.com/google/adk-go

GitHub Trends

@githubtrending · Post #14693 · 10.05.2025 г., 12:00

#jupyter_notebook#a2a#agentic_ai#dapr#dapr_pub_sub#dapr_service_invocation#dapr_sidecar#dapr_workflow#docker#kafka#kubernetes#langmem#mcp#openai#openai_agents_sdk#openai_api#postgresql_database#rabbitmq#rancher_desktop#redis#serverless_containers The Dapr Agentic Cloud Ascent (DACA) design pattern helps you build powerful, scalable AI systems that can handle millions of AI agents working together without crashing. It uses Dapr technology with Kubernetes to efficiently manage many AI agents as lightweight virtual actors, ensuring fast response, reliability, and easy scaling. You can start small using free or low-cost cloud tools and grow to planet-scale systems. The OpenAI Agents SDK is recommended for beginners because it is simple, flexible, and gives you good control to develop AI agents quickly. This approach saves costs, avoids vendor lock-in, and supports resilient, event-driven AI workflows, making it ideal for developers aiming to create advanced, cloud-native AI applications[1][2][3][4]. https://github.com/panaversity/learn-agentic-ai