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

Резултати

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

Пребарај: #ros2

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

@githubtrending · Post #15156 · 20.09.2025 г., 13:00

#python#llm#multiagent#robotics#ros2#zenoh OpenMind's OM1 is an open-source, modular AI system that lets you build and control smart robots like humanoids, quadrupeds, and educational bots. It works with many types of sensors (cameras, LIDAR, web data) and supports physical actions like moving and talking. OM1 is easy to use with Python, supports many hardware platforms via plugins, and offers tools for debugging and voice/vision AI integration. You can quickly create custom AI agents that interact naturally and upgrade them for different robots. This helps you develop advanced, human-friendly robots that can navigate, communicate, and perform tasks autonomously or with your commands. It runs on common platforms and supports full autonomy with real-time mapping and control. This system benefits you by simplifying robot development, enabling flexible AI-powered behaviors, and supporting a wide range of hardware and applications. https://github.com/OpenMind/OM1

GitHub Trends

@githubtrending · Post #15616 · 15.04.2026 г., 12:00

#cplusplus#hap#mid_360#ros#ros2 Livox ROS Driver 2 connects your Livox LiDARs like HAP and Mid360 to ROS (Noetic) or ROS2 (Foxy/Humble/Jazzy) on matching Ubuntu versions. Clone the repo in a workspace/src folder, build Livox-SDK2, then run ./build.sh with your ROS version, and launch with roslaunch or ros2 launch files from launch_ROS1/ROS2 folders—edit JSON configs for IP, ports, frequency (up to 100Hz), and formats. This lets you quickly test and visualize point clouds in RViz for robotics development, saving time on setup and debugging. https://github.com/Livox-SDK/livox_ros_driver2

GitHub Trends

@githubtrending · Post #15225 · 15.10.2025 г., 13:00

#mdx#bilateral_teleoperation#force_feedback#genesis#gravity_compensation#humanoid_robot#imitation_learning#machine_learning#moveit2#mujoco#open_source#openarm#python#reinforcement_learning#robot#robot_arm#robotics#ros2#teleoperation OpenArm is a special robot arm that helps with physical AI research. It has 7 degrees of freedom, which means it can move like a human arm. This makes it good for tasks that involve touching or moving things safely around people. The robot is open-source, meaning anyone can build, modify, and use it. This is helpful because it makes advanced robotics available to more people, like researchers and students, without costing too much. A complete system with two arms costs about $6,500, which is much cheaper than similar robots. https://github.com/enactic/openarm