< >
Home » ROS与QT语言入门教程 » ROS与QT语言入门教程-使用PyQt发布话题

ROS与QT语言入门教程-使用PyQt发布话题

ROS与QT语言入门教程-使用PyQt发布话题

说明

  • 介绍如何在ROS下使用Python Qt语言发布话题

点击查看完整代码

步骤:

  • 安装PyQt4
sudo apt-get instal python-qt4
  • 检验是否安装成功

代码编写界面

#!/usr/bin/env python

import sys
import rospy
from std_msgs.msg import String
from PyQt4 import QtGui
from PyQt4.QtGui import QLabel, QVBoxLayout, QHBoxLayout, QSlider, QPushButton
from PyQt4.QtCore import Qt
 
class PyGui(QtGui.QWidget):
    def __init__(self):
        super(PyGui, self).__init__()
        self.setObjectName('PyGui')
        self.pub = rospy.Publisher("pyqt_topic", String, queue_size=10)
        rospy.init_node('pyqt_gui')
        self.current_value = 0
        my_layout = QHBoxLayout()
        my_btn = QPushButton()
        my_btn.setText("Publisher")
        my_btn.setFixedWidth(130)
        my_btn.clicked.connect(self.publish_topic)
        my_layout.addWidget(my_btn)
        my_layout.addSpacing(50)
        self.my_label = QLabel()
        self.my_label.setFixedWidth(140)
        self.my_label.setText("num: " + str(0))
        self.my_label.setEnabled(False)
        my_layout.addWidget(self.my_label)
        my_slider = QSlider()
        my_slider.setMinimum(0)
        my_slider.setMaximum(99)
        my_slider.setOrientation(Qt.Horizontal)
        my_slider.valueChanged.connect(self.changeValue)
        my_vlay = QVBoxLayout()
        my_vlay.addWidget(my_slider)
        layout = QVBoxLayout()
        layout.addLayout(my_layout)
        layout.addLayout(my_vlay)
        self.setLayout(layout)
        # self.show()

    def publish_topic(self):
        self.pub.publish(str(self.current_value))

    def changeValue(self, value):
        self.my_label.setText("num: " + str(value))
        self.current_value = value


if __name__ == "__main__":
    app=QtGui.QApplication(sys.argv)
    pyShow = PyGui()
    pyShow.show()
    sys.exit(app.exec_())

代码解释

  • 在init函数中,定义一个发布者pyqt_topic

  • 定义一个按钮控件my_btn ,一个标签my_label ,一个滑动条控件my_slider

  • 为滑动条添加槽函数changeValue

  • 为按钮添加槽函数publish_topic

运行

  • 给python脚本文件添加执行权限
chmod +x demo.py
  • 打开一个终端,运行ros master
roscore
  • 打开另一个终端,运行脚本文件
./demo.py
  • 打开另一个终端,查看pyqt_topic话题
rostopic echo /pyqt_topic

效果图

请输入图片描述

参考资料

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros与qt语言入门教程, ros qt