I am not able to run my python ros file which is in the form of qtdesigner4 and also I am not getting any error and the problem is my widget is not getting launched
#!/usr/bin/python import os import rospkg import rospy
from dof_pkg.msg import arm_msgs
from qt_gui.plugin import Plugin from python_qt_binding import loadUi from python_qt_binding.QtCore import Qt, QTimer, Slot from python_qt_binding.QtGui import QKeySequence from python_qt_binding.QtWidgets import QWidget
class dof(Plugin): slider_factor = 0.55 global var1 var1=None global var2 var2=None global var3 var3=None global var4 var4=None global var5 var5=None global dof6 var6=None global dofstrvalues
global dof_val
#global var1
#global var2
#global var3
#global var4
#global var5
#global var6
def __init__(self, context):
super(dof, self).__init__(context)
# Give QObjects reasonable names
self.setObjectName('dof')
rp = rospkg.RosPack()
# Process standalone plugin command-line arguments
from argparse import ArgumentParser
parser = ArgumentParser()
# Add argument(s) to the parser.
parser.add_argument("-q", "--quiet", action="store_true",
dest="quiet",
help="Put plugin in silent mode")
args, unknowns = parser.parse_known_args(context.argv())
if not args.quiet:
print ('arguments: ', args)
print ('unknowns: ', unknowns)
# Create QWidget
self._widget = QWidget()
# Get path to UI file which is a sibling of this file
# in this example the .ui and .py file are in the same folder
ui_file = os.path.join(rp.get_path('dof_pkg'), 'resource', 'dofgui.ui')
# Extend the widget with all attributes and children from UI file
loadUi(ui_file, self._widget)
# Give QObjects reasonable names
self._widget.setObjectName('MyPluginUi')
# Show _widget.windowTitle on left-top of each plugin (when
# it's set in _widget). This is useful when you open multiple
# plugins at once. Also if you open multiple instances of your
# plugin at once, these lines add number to make it easy to
# tell from pane to pane.
if context.serial_number() > 1:
self._widget.setWindowTitle(self._widget.windowTitle() + (' (%d)' % context.serial_number()))
# Add widget to the user interface
context.add_widget(self._widget)
self._widget.pushButton.pressed.connect(self._on_button_clicked)
self._widget.dof1_line.textChanged.connect(self._on_dof1_changed)
self._widget.dof2_line.textChanged.connect(self._on_dof2_changed)
self._widget.dof3_line.textChanged.connect(self._on_dof3_changed)
self._widget.dof4_line.textChanged.connect(self._on_dof4_changed)
self._widget.dof5_line.textChanged.connect(self._on_dof5_changed)
self._widget.dof6_line.textChanged.connect(self._on_dof6_changed)
#self._update_parameter_timer = QTimer(self)
#self._update_parameter_timer.timeout.connect(self._on_dof1_changed)
#self._update_parameter_timer.timeout.connect(self._on_dof2_changed)
#self._update_parameter_timer.start(100)
#self.zero_cmd_sent = False
@Slot(str)
def _on_dof1_changed(self,dof1val):
global var1
var1 = int(dof1val)
def _on_dof2_changed(self,dof2val):
global var2
var2= int(dof2val)
def _on_dof3_changed(self,dof3val):
global var3
var3= int(dof3val)
def _on_dof4_changed(self,dof4val):
global var4
var4= int(dof4val)
def _on_dof5_changed(self,dof5val):
global var5
var5= int(dof5val)
def _on_dof6_changed(self,dof6val):
global var6
var6= int(dof6val)
def _on_button_clicked(self):
global dof_val
global dofstrvalues
dofstrvalues = arm_msgs()
dofstrvalues.dofvalues = [var1,var2,var3,var4,var5,var6]
dof_val=(dofstrvalues)
try:
self._publisher = rospy.Publisher("test1", arm_msgs, queue_size=10)
except TypeError:
self._publisher = rospy.Publisher("test1", arm_msgs)
self._publisher.publish(dof_val)
def shutdown_plugin(self):
# TODO unregister all publishers here
pass
def save_settings(self, plugin_settings, instance_settings):
# TODO save intrinsic configuration, usually using:
# instance_settings.set_value(k, v)
pass
def restore_settings(self, plugin_settings, instance_settings):
# TODO restore intrinsic configuration, usually using:
# v = instance_settings.value(k)
pass
#def trigger_configuration(self):
# Comment ...