#!/usr/env/bin python3 import os import rospy import rospkg from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QPushButton, QWidget, QLabel from PyQt5.QtUiTools import QUiLoader from rviz_visual_tools import RvizVisualTools class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() # Load the UI file ui_file = os.path.join(rospkg.RosPack().get_path('test_wst'), 'app.ui') self.load_ui(ui_file) # Connect buttons self.button1.clicked.connect(self.handle_button1) self.button2.clicked.connect(self.handle_button2) # Initialize RViz self.rviz = RvizVisualTools("world", "/rviz_visual_tools") # Add robot model to RViz self.rviz.load_robot() # Add RViz visualization to the UI self.rviz_widget = self.rviz.embed_into("rvizWidget") def load_ui(self, ui_file): loader = QUiLoader() ui_file = QFile(ui_file) ui_file.open(QFile.ReadOnly) self.window = loader.load(ui_file) ui_file.close() self.setCentralWidget(self.window.centralwidget) # Find UI elements self.button1 = self.window.centralwidget.findChild(QPushButton, "button1") self.button2 = self.window.centralwidget.findChild(QPushButton, "button2") self.rviz_widget = self.window.centralwidget.findChild(QWidget, "rvizWidget") def handle_button1(self): # Handle button 1 click print("Button 1 clicked") def handle_button2(self): # Handle button 2 click print("Button 2 clicked") if __name__ == '__main__': # Initialize the ROS node rospy.init_node("rviz_example") # Initialize the Qt application app = QApplication([]) window = MainWindow() window.show() # Start the Qt event loop app.exec_()
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter