本文整理汇总了Python中python_qt_binding.QtGui.QWidget.sender方法的典型用法代码示例。如果您正苦于以下问题:Python QWidget.sender方法的具体用法?Python QWidget.sender怎么用?Python QWidget.sender使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类python_qt_binding.QtGui.QWidget
的用法示例。
在下文中一共展示了QWidget.sender方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: SimpleGUI
# 需要导入模块: from python_qt_binding.QtGui import QWidget [as 别名]
# 或者: from python_qt_binding.QtGui.QWidget import sender [as 别名]
#.........这里部分代码省略.........
forward_base_box.addItem(QtGui.QSpacerItem(400,20))
forward_base_box.addWidget(forward_base_button)
forward_base_box.addItem(QtGui.QSpacerItem(400,20))
base_box.addLayout(forward_base_box)
left_right_base_box = QtGui.QHBoxLayout()
left_base= Base(Base.LEFT, self)
left_base_button = self.create_button('move left',
left_base.create_closure())
right_base= Base(Base.RIGHT, self)
right_base_button= self.create_button('move right',
right_base.create_closure())
left_right_base_box.addItem(QtGui.QSpacerItem(300,20))
left_right_base_box.addWidget(left_base_button)
left_right_base_box.addItem(QtGui.QSpacerItem(50,20))
left_right_base_box.addWidget(right_base_button)
left_right_base_box.addItem(QtGui.QSpacerItem(300,20))
base_box.addLayout(left_right_base_box)
backward_base_box = QtGui.QHBoxLayout()
backward_base= Base(Base.BACKWARD, self)
backward_base_button = self.create_button('move backward',
backward_base.create_closure())
backward_base_box.addItem(QtGui.QSpacerItem(400,20))
backward_base_box.addWidget(backward_base_button)
backward_base_box.addItem(QtGui.QSpacerItem(400,20))
base_box.addLayout(backward_base_box)
large_box.addLayout(base_box)
turn_base_box = QtGui.QHBoxLayout()
counter_base= Base(Base.COUNTER, self)
counter_base_button = self.create_button('\\\n -->',
counter_base.create_closure())
clockwise_base= Base(Base.CLOCKWISE, self)
clockwise_base_button = self.create_button(' /\n<--',
clockwise_base.create_closure())
turn_base_box.addItem(QtGui.QSpacerItem(75,20))
turn_base_box.addWidget(counter_base_button)
turn_base_box.addItem(QtGui.QSpacerItem(225,20))
turn_base_box.addWidget(clockwise_base_button)
turn_base_box.addItem(QtGui.QSpacerItem(100,20))
large_box.addLayout(turn_base_box)
self._widget.setObjectName('SimpleGUI')
self._widget.setLayout(large_box)
context.add_widget(self._widget)
self._widget.setStyleSheet("QWidget { image: url(%s) }" %
(str(os.path.dirname(os.path.realpath(__file__))) +
"/../../rosie_background.jpg"))
def show_text_in_rviz(self, text):
marker = Marker(type=Marker.TEXT_VIEW_FACING, id=0,
lifetime=rospy.Duration(1.5),
pose=Pose(Point(0.5, 0.5, 1.45), Quaternion(0, 0, 0, 1)),
scale=Vector3(0.06, 0.06, 0.06),
header=Header(frame_id='base_link'),
color=ColorRGBA(0.0, 1.0, 0.0, 0.8), text=text)
self.marker_publisher.publish(marker)
def sound_cb(self, sound_request):
qWarning('Received sound.')
self.sound_sig.emit(sound_request)
def create_button(self, name, method):
btn = QtGui.QPushButton(name, self._widget)
btn.clicked.connect(method)
btn.setAutoRepeat(True)
return btn
def sound_sig_cb(self, sound_request):
qWarning('Received sound signal.')
#if (sound_request.command == SoundRequest.SAY):
qWarning('Robot said: ' + sound_request.arg)
self.speech_label.setText('Robot said: ' + sound_request.arg)
def command_cb(self):
button_name = self._widget.sender().text()
if (button_name == 'Speak'):
qWarning('Robot will say: ' + self.sound_textbox.text())
self._sound_client.say(self.sound_textbox.text())
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
示例2: ArmGUI
# 需要导入模块: from python_qt_binding.QtGui import QWidget [as 别名]
# 或者: from python_qt_binding.QtGui.QWidget import sender [as 别名]
#.........这里部分代码省略.........
right_arm_box.addItem(QtGui.QSpacerItem(50,50))
arm_box.addLayout(left_arm_box)
arm_box.addItem(QtGui.QSpacerItem(20, 20))
arm_box.addLayout(right_arm_box)
large_box.addLayout(arm_box)
# Initialize state of saved arm poses for selected dropdowns
self.update_saved_l_arm_pose()
self.update_saved_r_arm_pose()
# Update saved arm pose data on the changing of selected pose
self.combo_box_left.connect(self.combo_box_left,
QtCore.SIGNAL("currentIndexChanged(QString)"), self.update_saved_l_arm_pose)
self.combo_box_right.connect(self.combo_box_right,
QtCore.SIGNAL("currentIndexChanged(QString)"), self.update_saved_r_arm_pose)
self._widget.setObjectName('ArmGUI')
self._widget.setLayout(large_box)
context.add_widget(self._widget)
self._widget.setStyleSheet("QWidget { image: url(%s) }" %
(str(os.path.dirname(os.path.realpath(__file__))) +
"/../../arm_gui_bg_large.png"))
rospy.loginfo('GUI initialization complete.')
def create_button(self, name, method=None):
if method == None:
method = self.command_cb
btn = QtGui.QPushButton(name, self._widget)
btn.clicked.connect(method)
return btn
def command_cb(self):
button_name = self._widget.sender().text()
if (button_name == 'Relax right arm'):
self.relax_arm('r')
elif (button_name == 'Freeze right arm'):
self.freeze_arm('r')
elif (button_name == 'Relax left arm'):
self.relax_arm('l')
elif (button_name == 'Freeze left arm'):
self.freeze_arm('l')
elif (button_name == 'Move to pose (R)'):
self.move_arm('r')
elif (button_name == 'Move to pose (L)'):
self.move_arm('l')
elif (button_name == 'Delete pose (L)'):
self.delete_pose_left()
elif (button_name == 'Delete pose (R)'):
self.delete_pose_right()
def update_saved_l_arm_pose(self):
selected_index = self.combo_box_left.currentIndex()
if(selected_index == -1):
self.saved_l_arm_pose = None
else:
self.saved_l_arm_pose = self.combo_box_left.itemData(selected_index)
def update_saved_r_arm_pose(self):
selected_index = self.combo_box_right.currentIndex()
if(selected_index == -1):
self.saved_r_arm_pose = None
else:
self.saved_r_arm_pose = self.combo_box_right.itemData(selected_index)
def delete_pose_left(self):
示例3: SimpleGUI
# 需要导入模块: from python_qt_binding.QtGui import QWidget [as 别名]
# 或者: from python_qt_binding.QtGui.QWidget import sender [as 别名]
#.........这里部分代码省略.........
base_box = QtGui.QVBoxLayout()
large_box.addItem(QtGui.QSpacerItem(100,100))
#forward
forward_base_box = QtGui.QHBoxLayout()
forward_base = Base(Base.FORWARD)
forward_base_button = self.create_button('move forward', forward_base.create_closure())
forward_base_box.addItem(QtGui.QSpacerItem(400,20))
forward_base_box.addWidget(forward_base_button)
forward_base_box.addItem(QtGui.QSpacerItem(400,20))
base_box.addLayout(forward_base_box)
#large_box.addWidget(forward_base_button)
#left
left_right_base_box = QtGui.QHBoxLayout()
left_base= Base(Base.LEFT)
left_base_button = self.create_button('move left', left_base.create_closure())
#large_box.addWidget(left_base_button)
#right
right_base= Base(Base.RIGHT)
right_base_button= self.create_button('move right', right_base.create_closure())
left_right_base_box.addItem(QtGui.QSpacerItem(300,20))
left_right_base_box.addWidget(left_base_button)
left_right_base_box.addItem(QtGui.QSpacerItem(50,20))
left_right_base_box.addWidget(right_base_button)
left_right_base_box.addItem(QtGui.QSpacerItem(300,20))
base_box.addLayout(left_right_base_box)
#large_box.addWidget(right_base_button)
#backward
backward_base_box = QtGui.QHBoxLayout()
backward_base= Base(Base.BACKWARD)
backward_base_button = self.create_button('move backward', backward_base.create_closure())
backward_base_box.addItem(QtGui.QSpacerItem(400,20))
backward_base_box.addWidget(backward_base_button)
backward_base_box.addItem(QtGui.QSpacerItem(400,20))
base_box.addLayout(backward_base_box)
#large_box.addWidget(backward_base_button)
large_box.addLayout(base_box)
turn_base_box = QtGui.QHBoxLayout()
#turn left
turnleft_base= Base(Base.TURNLEFT)
turnleft_base_button = self.create_button(' /\n<--', turnleft_base.create_closure())
#large_box.addWidget(turnleft_base_button)
#turn right
turnright_base= Base(Base.TURNRIGHT)
turnright_base_button = self.create_button('\\\n -->', turnright_base.create_closure())
turn_base_box.addItem(QtGui.QSpacerItem(75,20))
turn_base_box.addWidget(turnright_base_button)
turn_base_box.addItem(QtGui.QSpacerItem(225,20))
turn_base_box.addWidget(turnleft_base_button)
turn_base_box.addItem(QtGui.QSpacerItem(100,20))
large_box.addLayout(turn_base_box)
#large_box.addWidget(turnright_base_button)
self._widget.setObjectName('SimpleGUI')
self._widget.setLayout(large_box)
context.add_widget(self._widget)
self._widget.setStyleSheet("QWidget { image: url(%s) }" % "/home/vjampala/catkin_ws/src/cse481/hw1/rqt_simplegui/rosie_background.jpg")
def sound_cb(self, sound_request):
qWarning('Received sound.')
self.sound_sig.emit(sound_request)
def create_button(self, name, method):
btn = QtGui.QPushButton(name, self._widget)
btn.clicked.connect(method)
return btn
def sound_sig_cb(self, sound_request):
qWarning('Received sound signal.')
#if (sound_request.command == SoundRequest.SAY):
qWarning('Robot said: ' + sound_request.arg)
self.speech_label.setText('Robot said: ' + sound_request.arg)
def command_cb(self):
button_name = self._widget.sender().text()
if (button_name == 'Speak'):
qWarning('Robot will say: ' + self.sound_textbox.text())
self._sound_client.say(self.sound_textbox.text())
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
示例4: ArmGUI
# 需要导入模块: from python_qt_binding.QtGui import QWidget [as 别名]
# 或者: from python_qt_binding.QtGui.QWidget import sender [as 别名]
#.........这里部分代码省略.........
button_box3.addWidget(self.create_button('Delete Pose Set'))
button_box3.addStretch(1)
large_box.addLayout(button_box3)
large_box.addItem(QtGui.QSpacerItem(100,20))
poses_box = QtGui.QVBoxLayout()
self.status_message_label = QtGui.QLabel('No Saved Poses')
poses_box.addWidget(self.status_message_label)
large_box.addLayout(poses_box)
large_box.addStretch(1)
self._widget.setObjectName('ArmGUI')
self._widget.setLayout(large_box)
context.add_widget(self._widget)
rospy.loginfo('GUI initialization complete.')
# currently maps from a quarter second between poses to ~3.5 seconds;
# pos comes in as the slider value which ranges from 0 to 100. it
# seems like even with the delay set to 0, there are automatic
# constraints, but to be safe the quarter second is added. there also
# seem to be poses that are intrinsically hard for the robot to move
# between, causing slow movement even with a low delay set.
def set_pose_speed(self, pos):
self.time_between_poses = (100 - pos) / 30 + .25
def create_button(self, name):
btn = QtGui.QPushButton(name, self._widget)
btn.clicked.connect(self.command_cb)
return btn
# This is a really janky way of doing this, you should check
# self._widget.sender() to figure out where the event originated.
def command_cb(self):
button_name = self._widget.sender().text()
if (button_name == 'Relax arms'):
self.relax_arm('r')
self.relax_arm('l')
elif (button_name == 'Freeze arms'):
self.freeze_arm('r')
self.freeze_arm('l')
elif (button_name == 'Add to Pose Set'):
self.save_pose()
elif (button_name == 'Do Pose Set'):
self.move_arm()
elif (button_name == 'Delete Pose Set'):
self.delete_pose()
self.update_pose_set_length()
def save_pose(self):
pose_set = self.pose_set_text.text()
if len(pose_set) is 0 or pose_set is None:
self.status_message_label.setText("Invalid pose name")
return
# if not already saved, make a new pose set
if pose_set not in self.saved_pose_sets:
self.pose_selector.addItem(pose_set)
self.saved_pose_sets.add(pose_set)
# auto select the saved pose
index = self.pose_selector.findText(pose_set)
self.pose_selector.setCurrentIndex(index)
r_joint_state = self.get_joint_state('r')
l_joint_state = self.get_joint_state('l')
示例5: SimpleGUI
# 需要导入模块: from python_qt_binding.QtGui import QWidget [as 别名]
# 或者: from python_qt_binding.QtGui.QWidget import sender [as 别名]
#.........这里部分代码省略.........
self.index = 1;
rospy.loginfo("Completed GUI initialization")
# Event for when text box is changed
def onChanged(self, text):
self.speech_label.setText(text)
self.speech_label.adjustSize()
def sound_cb(self, sound_request):
qWarning('Received sound.')
self.sound_sig.emit(sound_request)
def create_button(self, name):
btn = QtGui.QPushButton(name, self._widget)
btn.setFixedWidth(150)
btn.clicked.connect(self.command_cb)
return btn
def create_pressed_button(self, name):
btn = QtGui.QPushButton(name, self._widget)
btn.setFixedWidth(150)
btn.pressed.connect(self.command_cb)
btn.setAutoRepeat(True) # To make sure the movement repeats itself
return btn
def sound_sig_cb(self, sound_request):
qWarning('Received sound signal.')
qWarning('Robot said: ' + sound_request.arg)
self.speech_label.setText(sound_request.arg) #'Robot said: ' +
#a button was clicked
def command_cb(self):
button_name = self._widget.sender().text()
#robot talk button clicked
if (button_name == 'Speak'):
qWarning('Robot will say: ' + self.speech_label.text() )
self._sound_client.say(self.speech_label.text())
self.show_text_in_rviz("Robot is Speaking")
#gripper button selected
elif ('Gripper' in button_name):
self.gripper_click(button_name)
# Move forward
elif (button_name == '^'):
self.base_action(0.25, 0.0, 0.0, 0.0, 0.0, 0.0)
# Move left
elif (button_name == '<'):
self.base_action(0.0, 0.25, 0.0, 0.0, 0.0, 0.0)
# Move right
elif (button_name == '>'):
self.base_action(0.0, -0.25, 0.0, 0.0, 0.0, 0.0)
# Move back
elif (button_name == 'v'):
self.base_action(-0.25, 0.0, 0.0, 0.0, 0.0, 0.0)
#Rotate Left
elif (button_name == 'Rotate Left'):
self.base_action(0.0, 0.0, 0.0, 0.0, 0.0, 0.50)
# Rotate Right
示例6: PbDGUI
# 需要导入模块: from python_qt_binding.QtGui import QWidget [as 别名]
# 或者: from python_qt_binding.QtGui.QWidget import sender [as 别名]
#.........这里部分代码省略.........
nColumns = 9
if actionIndex is None:
actionIndex = self.currentAction
stepIndex = self.n_steps(actionIndex)
r_step = [QtGui.QStandardItem('Step' + str(stepIndex + 1)),
QtGui.QStandardItem(self.get_frame_type(frameType)),
QtGui.QStandardItem('Absolute')]
l_step = [QtGui.QStandardItem('Step' + str(stepIndex + 1)),
QtGui.QStandardItem(self.get_frame_type(frameType)),
QtGui.QStandardItem('Absolute')]
self.r_model.invisibleRootItem().appendRow(r_step)
self.l_model.invisibleRootItem().appendRow(l_step)
self.update_table_view()
self.currentStep = stepIndex
def update_table_view(self):
self.l_view.setColumnWidth(0, 50)
self.l_view.setColumnWidth(1, 100)
self.l_view.setColumnWidth(2, 70)
self.r_view.setColumnWidth(0, 50)
self.r_view.setColumnWidth(1, 100)
self.r_view.setColumnWidth(2, 70)
def n_steps(self, actionIndex=None):
return self.l_model.invisibleRootItem().rowCount()
def delete_all_steps(self, actionIndex=None):
if actionIndex is None:
actionIndex = self.currentAction
n_steps = self.n_steps()
if (n_steps > 0):
self.l_model.invisibleRootItem().removeRows(0, n_steps)
self.r_model.invisibleRootItem().removeRows(0, n_steps)
def n_actions(self):
return len(self.actionIcons.keys())
def new_action(self):
nColumns = 6
actionIndex = self.n_actions()
for key in self.actionIcons.keys():
self.actionIcons[key].selected = False
self.actionIcons[key].updateView()
actIcon = ActionIcon(self._widget, actionIndex, self.action_pressed)
self.actionGrid.addLayout(actIcon, int(actionIndex/nColumns),
actionIndex%nColumns)
self.actionIcons[actionIndex] = actIcon
def step_pressed(self, step_index):
gui_cmd = GuiCommand(GuiCommand.SELECT_ACTION_STEP, step_index)
self.gui_cmd_publisher.publish(gui_cmd)
def action_pressed(self, actionIndex, isPublish=True):
for i in range(len(self.actionIcons.keys())):
key = self.actionIcons.keys()[i]
if key == actionIndex:
self.actionIcons[key].selected = True
else:
self.actionIcons[key].selected = False
self.actionIcons[key].updateView()
self.currentAction = actionIndex
self.stepsBox.setTitle('Steps for Action ' + str(self.currentAction+1))
if isPublish:
gui_cmd = GuiCommand(GuiCommand.SWITCH_TO_ACTION, (actionIndex+1))
self.gui_cmd_publisher.publish(gui_cmd)
def command_cb(self):
clickedButtonName = self._widget.sender().text()
for key in self.commands.keys():
if (self.commands[key] == clickedButtonName):
qWarning('Sending speech command: '+ key)
command = Command()
command.command = key
self.speech_cmd_publisher.publish(command)
def robotSoundReceived(self, soundReq):
if (soundReq.command == SoundRequest.SAY):
qWarning('Robot said: ' + soundReq.arg)
self.speechLabel.setText('Robot sound: ' + soundReq.arg)
def exp_state_cb(self, state):
qWarning('Received new experiment state.')
self.exp_state_sig.emit(state)
def shutdown_plugin(self):
# TODO unregister all publishers here
self.speech_cmd_publisher.unregister()
self.gui_cmd_publisher.unregister()
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
示例7: OculusTeleopGUI
# 需要导入模块: from python_qt_binding.QtGui import QWidget [as 别名]
# 或者: from python_qt_binding.QtGui.QWidget import sender [as 别名]
#.........这里部分代码省略.........
self.speech_label.setPalette(palette)
speech_box.addWidget(self.speech_label)
# Speech box added to main layout
large_box.addLayout(speech_box)
# Puts layout in widget and adds widget name for RosGUI to identify
self._widget.setObjectName('OculusTeleopGUI')
self._widget.setLayout(large_box)
context.add_widget(self._widget)
rospy.loginfo('GUI initialization complete.')
# Will create a button, with all buttons using same event trigger
def create_button(self, name):
btn = QtGui.QPushButton(name, self._widget)
if (name == 'Stack Init'):
btn.clicked.connect(self.command_cb)
elif (name == 'Drive Init'):
btn.clicked.connect(self.command_cb)
elif (name == 'Set Rate'):
btn.clicked.connect(self.command_cb)
elif (name == 'Get Rate'):
btn.clicked.connect(self.command_cb)
elif (name == 'Start Log'):
btn.clicked.connect(self.command_cb)
elif (name == 'Stop Log'):
btn.clicked.connect(self.command_cb)
return btn
# Triggered when request to sound_play is made
def sound_sig_cb(self, sound_request):
qWarning('Received sound signal.')
#if (sound_request.command == SoundRequest.SAY):
qWarning('Robot said: ' + sound_request.arg)
# self.speech_label.setText('Robot said: ' + sound_request.arg)
# Triggered When Subscribber to robot sound detects a message
def sound_cb(self, sound_request):
qWarning('Received sound.')
self.sound_sig.emit(sound_request)
return
# Triggered when button is pressed: Place response actions here
def command_cb(self):
button_name = self._widget.sender().text()
speechLabel = '';
if (button_name == 'Stack Init'):
self.armnode.stack_init_motion()
speechLabel = 'is initializing arms for stacking';
elif (button_name == 'Drive Init'):
self.armnode.fold_motion()
speechLabel = 'is initializing arms for driving';
elif (button_name == 'Set Rate'):
self.setRate()
speechLabel = 'set logging rate to ' + str(self.logRate) + 'Hz.'
elif (button_name == 'Get Rate'):
qWarning('Logging Rate set to ' + str(self.logRate) + 'Hz')
speechLabel = 'is ready to log at ' + str(self.logRate) + 'Hz.'
elif (button_name == 'Start Log'):
self.start_logger()
speechLabel = 'has started logging.'
elif (button_name == 'Stop Log'):
self.logger.closeAllBags()
self.isLogging = False
speechLabel = 'has stopped logging.'
self.speech_label.setText('Robot ' + speechLabel)
def start_logger(self):
if (not self.isLogging):
name = self.file_text_in.text()
if (self.fileName == name):
self.fileNum += 1
else:
self.fileNum = 1
self.fileName = name
self.logger = Logger(self.fileName, str(self.fileNum), 1.0/self.logRate)
rospy.on_shutdown(self.logger.closeAllBags)
self.isLogging = True
def setRate(self):
if (not self.isLogging):
rate = self.rate_text_in.text()
self.logRate = float(rate)
def shutdown_plugin(self):
# TODO unregister all publishers here
# Leave both arm controllers on
start_controllers = ['r_arm_controller', 'l_arm_controller']
stop_controllers = []
self.armnode.set_arm_mode(start_controllers, stop_controllers, self.switchnode)
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
示例8: WaterPulse
# 需要导入模块: from python_qt_binding.QtGui import QWidget [as 别名]
# 或者: from python_qt_binding.QtGui.QWidget import sender [as 别名]
#.........这里部分代码省略.........
base_box.addLayout(backward_base_box)
large_box.addLayout(base_box)
turn_base_box = QtGui.QHBoxLayout()
counter_base= Base(Base.COUNTER, self)
counter_base_button = self.create_button('\\\n -->',
counter_base.create_closure())
clockwise_base= Base(Base.CLOCKWISE, self)
clockwise_base_button = self.create_button(' /\n<--',
clockwise_base.create_closure())
turn_base_box.addItem(QtGui.QSpacerItem(75,20))
turn_base_box.addWidget(counter_base_button)
turn_base_box.addItem(QtGui.QSpacerItem(225,20))
turn_base_box.addWidget(clockwise_base_button)
turn_base_box.addItem(QtGui.QSpacerItem(100,20))
large_box.addLayout(turn_base_box)
self._widget.setObjectName('WaterPulse')
self._widget.setLayout(large_box)
context.add_widget(self._widget)
self._widget.setStyleSheet("QWidget { image: url(%s) }" %
(str(os.path.dirname(os.path.realpath(__file__))) +
"/../../rosie_background.jpg"))
def show_text_in_rviz(self, text):
marker = Marker(type=Marker.TEXT_VIEW_FACING, id=0,
lifetime=rospy.Duration(1.5),
pose=Pose(Point(0.5, 0.5, 1.45), Quaternion(0, 0, 0, 1)),
scale=Vector3(0.06, 0.06, 0.06),
header=Header(frame_id='base_link'),
color=ColorRGBA(0.0, 1.0, 0.0, 0.8), text=text)
self.marker_publisher.publish(marker)
def sound_cb(self, sound_request):
qWarning('Received sound.')
self.sound_sig.emit(sound_request)
def create_button(self, name, method):
btn = QtGui.QPushButton(name, self._widget)
btn.clicked.connect(method)
btn.setAutoRepeat(True)
return btn
def sound_sig_cb(self, sound_request):
qWarning('Received sound signal.')
#if (sound_request.command == SoundRequest.SAY):
qWarning('Robot said: ' + sound_request.arg)
def command_cb(self):
button_name = self._widget.sender().text()
if (button_name == 'Speak'):
qWarning('Robot will say: ' + self.sound_textbox.text())
self._sound_client.say(self.sound_textbox.text())
elif (button_name == 'Trick or Treat'):
qWarning('Robot will say: Trick or Treat')
self._sound_client.say('Trick or Treat')
elif (button_name == 'Thank You'):
qWarning('Robot will say: Thank You')
self._sound_client.say('Thank You')
def knock(self):
for position in WaterPulse.positions:
velocities = [0] * len(position)
traj_goal = JointTrajectoryGoal()
traj_goal.trajectory.header.stamp = (rospy.Time.now() +
rospy.Duration(0.1))
time_to_joint = 2.0
traj_goal.trajectory.points.append(JointTrajectoryPoint(
positions=position,
velocities=velocities,
time_from_start=rospy.Duration(time_to_joint)))
traj_goal.trajectory.joint_names = self.l_joint_names
self.l_traj_action_client.send_goal(traj_goal)
result = 0
while(result < 2): # ACTIVE or PENDING
self.l_traj_action_client.wait_for_result()
result = self.l_traj_action_client.get_result()
#self.l_traj_action_client.wait_for_result()
#time.sleep(1)
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