def __init__(self, deviceitem): ''' Parameters ---------- motordevice : Motor ''' super(MotorControl, self).__init__() loadUi(os.path.join(os.path.dirname(__file__), 'motor.ui'), self) self.motordevice = deviceitem.device self.joylayout.addWidget(pg.JoystickButton()) self.targetSpinBox = simplewidgets.placeHolderSpinBox(self.targetGo) self._updateRange() self._setTarget(self.motordevice.setpoint.value) self.targetHSlider.valueChanged.connect(self._setTarget) self.targetVSlider.valueChanged.connect(self._setTarget) self.targetDial.valueChanged.connect(self._setTarget) self.targetLineEditLayout.insertWidget(0, self.targetSpinBox) # self.targetSpinBox.returnPressed.connect(lambda: self._setTarget(self.targetSpinBox.text())) self.targetGo.clicked.connect(lambda: self._setTarget(self.targetSpinBox.text())) self.stopButton.clicked.connect(self.stop) self.motordevice.readback.subscribe(self._setCurrentValue) # motordevice.motor.add_callback('DMOV',partial(guiinvoker.invoke_in_main_thread,self._updateStatus)) self.sigStatusChanged.connect(self._updateStatus) self._setCurrentValue(self.motordevice.readback.get()) self.targetHSlider.update() self.targetVSlider.update()
import pyqtgraph as pg from pyqtgraph.Qt import QtCore, QtWidgets app = pg.mkQApp("Joystick Button Example") mw = QtWidgets.QMainWindow() mw.resize(300, 50) mw.setWindowTitle('pyqtgraph example: JoystickButton') cw = QtWidgets.QWidget() mw.setCentralWidget(cw) layout = QtWidgets.QGridLayout() cw.setLayout(layout) mw.show() l1 = pg.ValueLabel(siPrefix=True, suffix='m') l2 = pg.ValueLabel(siPrefix=True, suffix='m') jb = pg.JoystickButton() jb.setFixedWidth(30) jb.setFixedHeight(30) layout.addWidget(l1, 0, 0) layout.addWidget(l2, 0, 1) layout.addWidget(jb, 0, 2) x = 0 y = 0 def update(): global x, y, l1, l2, jb dx, dy = jb.getState() x += dx * 1e-3
def setup(self): self.sem = self.app.hardware['sem_remcon'] self.controller = self.app.hardware['xbox_controller'] self.ui = self.dockarea = dockarea.DockArea() self.ui.setWindowTitle("sem_align") self.sem_controls = self.app.hardware['sem_remcon'].settings.New_UI() self.roi_map = { 'Focus': 'wd_line', 'Beam Shift': 'beamshift_roi', 'Stigmation': 'stig_roi', 'Aperture Align': 'aper_roi' } self.lq_map = { 'Focus': 'WD', 'Beam Shift': 'beamshift_xy', 'Stigmation': 'stig_xy', 'Aperture Align': 'aperture_xy' } self.sem_align_widget_choices = ('Focus', 'Stigmation', 'Beam Shift', 'Aperture Align') self.settings.New('active_widget', dtype=str, initial='Focus', ro=False, choices=self.sem_align_widget_choices) a = 100 #aperture========= self.aper_plot = pg.PlotWidget() self.aper_plot.setAspectLocked(1.0) self.aper_plot.plot([-a, a, a, -a, -a], [-a, -a, a, a, -a]) self.aper_roi = PointLQROI(pos=[0, 0], size=(a, a), pen=(0, 9), movable=True) self.aper_plot.addItem(self.aper_roi) self.aper_roi.connect_lq(self.sem.settings.aperture_xy) self.aper_roi.removeHandle(0) self.aper_plot.showGrid(x=True, y=True, alpha=1.0) if hasattr(self, 'controller'): self.sem.settings.aperture_xy.add_listener(self.aper_roi.setPos, float) #stig============= self.stig_plot = pg.PlotWidget() self.stig_plot.setAspectLocked(1.0) self.stig_plot.plot([-a, a, a, -a, -a], [-a, -a, a, a, -a]) self.stig_roi = PointLQROI(pos=[0, 0], size=(a, a), pen=(0, 9), movable=True) self.stig_plot.addItem(self.stig_roi) self.stig_roi.connect_lq(self.sem.settings.stig_xy) self.stig_roi.removeHandle(0) self.stig_plot.showGrid(x=True, y=True, alpha=1.0) if self.controller: self.sem.settings.stig_xy.add_listener(self.stig_roi.setPos, float) #beam shift============= self.beamshift_plot = pg.PlotWidget() self.beamshift_plot.setAspectLocked(1.0) a = 100 # Boundary self.beamshift_plot.plot([-a, a, a, -a, -a], [-a, -a, a, a, -a]) self.beamshift_roi = PointLQROI(pos=[0, 0], size=(a, a), pen=(0, 9), movable=True) self.beamshift_plot.addItem(self.beamshift_roi) self.beamshift_roi.connect_lq(self.sem.settings.beamshift_xy) self.beamshift_roi.removeHandle(0) self.beamshift_plot.showGrid(x=True, y=True, alpha=1.0) if self.controller: self.sem.settings.beamshift_xy.add_listener( self.beamshift_roi.setPos, float) #focus============== self.wd_widget = QtWidgets.QWidget() self.wd_widget.setLayout(QtWidgets.QVBoxLayout()) self.wd_joystick = pg.JoystickButton() self.wd_joystick.sigStateChanged.connect(self.on_wd_joystick) self.wd_widget.layout().addWidget(self.wd_joystick, stretch=1) self.wd_plot = pg.PlotWidget() self.wd_plot.invertY(True) self.wd_widget.layout().addWidget(self.wd_plot, stretch=1) self.wd_line = pg.InfiniteLine(1, angle=0, pen=pg.mkPen((0, 9), width=4), movable=True) self.wd_plot.addItem(self.wd_line) self.wd_lim0 = pg.InfiniteLine(0, angle=0, pen=(2, 9), movable=False) self.wd_plot.addItem(self.wd_lim0) self.wd_lim1 = pg.InfiniteLine(50, angle=0, pen=(2, 9), movable=False) self.wd_plot.addItem(self.wd_lim1) self.wd_line.sigDragged.connect(self.on_update_wd_line) self.sem.settings.WD.add_listener(self.wd_line.setPos, float) self.dock_config() self.activate_focus_control()