Robotics StackExchange | Archived questions

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 dofpkg.msg import armmsgs

from qtgui.plugin import Plugin from pythonqtbinding import loadUi from pythonqtbinding.QtCore import Qt, QTimer, Slot from pythonqtbinding.QtGui import QKeySequence from pythonqt_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 in to signal that the plugin has a way to configure
    # This will enable a setting button (gear icon) in each dock widget title bar
    # Usually used to open a modal configuration dialog

Asked by Samudrala Naveen on 2019-03-15 01:52:57 UTC

Comments

Answers