You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS 2 Iron环境下RQT插件加载失败:setWidget属性缺失

解决RQT插件加载时的AttributeError: 'MyPlugin' object has no attribute 'setWidget'问题

问题原因

ROS 2 Iron版本中,rqt_gui_py.plugin.Plugin基类已移除setWidget方法,你参考的教程可能基于旧版ROS 2(如Foxy)编写,导致API不兼容。

修复步骤

  1. 修改插件类的初始化逻辑
    在你的my_module.py中,将原有的setWidget调用替换为直接设置self._widget属性,并通过插件上下文添加widget:

    from rqt_gui_py.plugin import Plugin
    from PyQt5.QtWidgets import QWidget
    
    class MyWidget(QWidget):
        # 自定义Widget的实现代码
        def __init__(self, parent=None):
            super().__init__(parent)
            # 这里添加你的GUI元素,比如按钮、标签等
    
    class MyPlugin(Plugin):
        def init_plugin(self, context):
            super().init_plugin(context)
            # 初始化自定义Widget
            self._widget = MyWidget()
            # 将Widget添加到RQT上下文
            context.add_widget(self._widget)
    
  2. 验证配置文件正确性

    • 检查plugin.xml中类的路径是否匹配你的代码结构,确保type属性指向正确的Python类:
      <library path="lib/python3.10/site-packages/rqt_mypkg">
        <class name="rqt_mypkg/MyPlugin" type="rqt_mypkg.my_module.MyPlugin" base_class_type="rqt_gui_py::Plugin">
          <description>自定义RQT插件</description>
          <qtgui>
            <label>My Plugin</label>
            <category>Custom</category>
          </qtgui>
        </class>
      </library>
      
    • 确认setup.py的entry_points配置正确注册了插件:
      setup(
          # 其他配置项
          entry_points={
              'rqt_gui.plugins': [
                  'rqt_mypkg = rqt_mypkg.my_module:MyPlugin',
              ],
          },
      )
      
  3. 重新编译与测试
    重新执行编译命令:

    colcon build --packages-select rqt_mypkg
    source install/setup.bash
    

    然后再次加载插件:

    rqt --force-discover --standalone rqt_mypkg
    

内容的提问来源于stack exchange,提问作者MiserlyMark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:18:11