使用Qt(PyQt)中的按钮启动roslaunch文件

时间:2018-05-08 09:23:01

标签: python qt pyqt ros qtgui

我正在尝试为我创建的基于ROS的程序制作GUI。我想制作一个按钮,它将启动一个roslaunch文件。有这个命令吗?或者一个示例程序可能会有所帮助。

1 个答案:

答案 0 :(得分:1)

如果您想使用pyqt,您可以创建一个QPushButton,点击它时会执行正常的roslaunch命令。您可以设置按下按钮时要调用的函数(使用clicked.connect())。在该函数内部,您可以使用QProcess运行外部可执行文件,在您的情况下将是: roslaunch my_launch_file.launch或您在终端中通常运行的任何内容以启动您的程序。

这是一个适合我的简单脚本(ubuntu 14.04,ros indigo):

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class MainLauncher( QWidget ):

    def __init__(self):
        QWidget.__init__(self)
        mainLayout = QGridLayout()
        self.launchButton = QPushButton( "LAUNCH" )
        self.launchButton.clicked.connect( self.onClick )
        mainLayout.addWidget(self.launchButton, 1, 1)
        self.setLayout( mainLayout )

    def onClick(self):
        ROS_PROGRAM = QProcess(self)
        print "Launching..."
        program = 'roslaunch my_launch_file.launch'
        ROS_PROGRAM.start(program)

if __name__ == '__main__':

    app = QApplication( sys.argv )
    mainLauncher = MainLauncher()
    mainLauncher.show()
    sys.exit(app.exec_())

如果需要,您可以在上面为PyQt5切换PyQt4。