def _toggle_connect_button(self): if self.zephyr_connect.connected is True: self.connectAction.setIcon(QIcon('common/connected.png')) self.connectAction.setToolTip("Disconnect") self.connectAction.triggered.disconnect( self.connect_button ) self.connectAction.triggered.connect( self.disconnect_button ) self.playAction.setEnabled( True ) self.timedAction.setEnabled( True ) else: self.connectAction.setIcon(QIcon('common/disconnected.png')) self.connectAction.setToolTip("Connect") self.connectAction.triggered.disconnect( self.disconnect_button ) self.connectAction.triggered.connect( self.connect_button ) self.playAction.setEnabled( False ) self.timedAction.setEnabled( False )
def initialize_widget(self): if self.is_radio: for button in self._buttons: button.toggled.disconnect(self.index_changed) self.vbox.removeWidget(button) button.deleteLater() self._buttons = [] else: self.combobox.blockSignals(True) while self.combobox.count(): self.combobox.removeItem(0) _choices = self.item.get_prop_value("data", "choices") for key, lbl, img in _choices: if self.is_radio: button = QRadioButton(lbl, self.group) if img: if is_text_string(img): if not osp.isfile(img): img = get_image_file_path(img) img = QIcon(img) elif isinstance(img, collections.Callable): img = img(key) if self.is_radio: button.setIcon(img) else: self.combobox.addItem(img, lbl) elif not self.is_radio: self.combobox.addItem(lbl) if self.is_radio: self._buttons.append(button) self.vbox.addWidget(button) button.toggled.connect(self.index_changed) if not self.is_radio: self.combobox.blockSignals(False)
def _setup_menu(self): # File menu file_menu = self.menuBar().addMenu(_("File")) settings_action = create_action(self, _("Settings"), icon=get_icon('settings.png'), tip=_("Settings"), triggered=self.edit_settings) quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), triggered=self.close) add_actions(file_menu, (settings_action, None, quit_action)) # View menu view_menu = self.createPopupMenu() view_menu.setTitle(_(u"&View")) self.menuBar().addMenu(view_menu) # Help menu help_menu = self.menuBar().addMenu("?") about_action = create_action(self, _("About..."), icon=get_std_icon('MessageBoxInformation'), triggered=self.about) add_actions(help_menu, (about_action,)) # Base toolbar self.connectAction = QAction(QIcon('common/disconnected.png'), 'Connect', self) self.connectAction.triggered.connect( self.connect_button ) self.playAction = QAction(QIcon('common/play.png'), 'Play free', self) self.playAction.triggered.connect( self.start_free_session_button ) self.stopAction = QAction(QIcon('common/stop.png'), 'Stop', self) self.stopAction.triggered.connect( self.stop_button ) self.timedAction = QAction(QIcon('common/timed.png'), 'Start', self) self.timedAction.triggered.connect( self.start_timed_session_button ) self.toolbar = self.addToolBar('Controls') self.toolbar.addAction( self.connectAction ) self.toolbar.addAction( self.playAction ) self.toolbar.addAction( self.stopAction ) self.toolbar.addAction( self.timedAction ) self.toolbar.setObjectName('Controls') # Time toolbar self.timer = Timer( self ) self.connect( self.timer, SIGNAL( 'SessionStop' ), self.session_stop )
def __init__(self, icondir=None): if icondir is None: icondir = os.path.dirname(__file__) + "/icons/" icons = [f for f in os.listdir(icondir) if f.find('.png') > -1] self._icons = { f.replace('.png', ''): QIcon(icondir + f) for f in icons }
def build_icon_from_cmap(cmap, width=32, height=32): """ Builds an icon representing the colormap """ data = zeros((width, height), uint8) line = linspace(0, 255, width) data[:, :] = line[:, newaxis] img = toQImage(data) img.setColorTable(cmap.colorTable(FULLRANGE)) return QIcon(QPixmap.fromImage(img))
def update(self, value): """Reimplement LineEditWidget method""" LineEditWidget.update(self, value) color = text_to_qcolor(value) if color.isValid(): bitmap = QPixmap(16, 16) bitmap.fill(color) icon = QIcon(bitmap) else: icon = get_icon("not_found") self.button.setIcon(icon)
def get_std_icon(name, size=None): """ Get standard platform icon Call 'show_std_icons()' for details """ if not name.startswith('SP_'): name = 'SP_' + name icon = QWidget().style().standardIcon(getattr(QStyle, name)) if size is None: return icon else: return QIcon(icon.pixmap(size, size))
def setup(self): """Setup window parameters""" self.setWindowIcon(QIcon("Chicken.png")) self.setWindowTitle(APP_NAME) self.resize(QSize(800, 600)) # Welcome message in statusbar: status = self.statusBar() status.showMessage( _("Welcome to guiqwt application example! 有人注意到這邊有字嗎"), 5000) # File menu file_menu = self.menuBar().addMenu(_("File")) new_action = create_action(self, _("New..."), shortcut="Ctrl+N", icon=get_icon('filenew.png'), tip=_("Create a new image, Ctrl+N"), triggered=self.new_csv) open_action = create_action(self, _("Open..."), shortcut="Ctrl+O", icon=get_icon('fileopen.png'), tip=_("Open a CSV file, Ctrl+O"), triggered=self.open_csv) quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application, Ctrl+Q"), triggered=self.close) add_actions(file_menu, (new_action, open_action, None, quit_action)) # # Help menu help_menu = self.menuBar().addMenu("?") about_action = create_action( self, _("About..."), icon=get_std_icon('MessageBoxInformation'), triggered=self.about) add_actions(help_menu, (about_action, )) main_toolbar = self.addToolBar("Main") add_actions(main_toolbar, ( new_action, open_action, )) # # Set central widget: toolbar = self.addToolBar("default") # Image toolbar: Image self.mainwidget = CentralWidget(self, toolbar) self.setCentralWidget(self.mainwidget)
def fill_combo(self): self.combobox.blockSignals(True) while self.combobox.count(): self.combobox.removeItem(0) _choices = self.item.get_prop_value("data", "choices") for key, lbl, img in _choices: if img: if is_text_string(img): if not osp.isfile(img): img = get_image_file_path(img) img = QIcon(img) elif isinstance(img, collections.Callable): img = img(key) self.combobox.addItem(img, lbl) else: self.combobox.addItem(lbl) self.combobox.blockSignals(False)
def setup(self, TestGUI): icondir = os.path.dirname(os.path.abspath("__file__")) + "/icons/" icons = [f for f in os.listdir(icondir) if f.find('.png') > -1] self.Icons = {f[0:f.find('.png')]: QIcon(icondir + f) for f in icons} self.setWindowTitle('IRAM GUI') self.resize(QSize(1200, 800)) self.setWindowIcon(self.Icons['Jupiter']) # self.measurements=measurements(sweep=False) self.measurements = None self.mainwidget = CentralWidget(self) self.setCentralWidget(self.mainwidget) self.controlpanel = self.mainwidget.controlpanel self.HKvalues = self.controlpanel.HKvalues self.Controlvalues = self.controlpanel.Controlvalues self.statusbar = self.mainwidget.statusbar self.autoYlim = True self.TestGUI = TestGUI self.init = False self.running = False self.measureThread = measure(self) self.timer = QTimer() self.timer.timeout.connect(self.updateTimer) self.timer.start(100) self.time = localtime() self.closeEvent = self.closeApp
def __init__(self): QMainWindow.__init__(self) self.stage = None self.stopOsci = False self.stopMeasure = False self.setWindowTitle(APP_NAME) ############### # Osci live curveplot_toolbar = self.addToolBar(_("Curve Plotting Toolbar")) self.osciCurveWidget = DockablePlotWidget(self, CurveWidget, curveplot_toolbar) self.osciCurveWidget.calcFun.addFun('s', lambda x: x, lambda x: x) self.osciCurveWidget.calcFun.addFun('ms', lambda x: x*1e3, lambda x: x*1e-3) self.osciCurveWidget.calcFun.addFun('µs', lambda x: x*1e6, lambda x: x*1e-6) osciPlot = self.osciCurveWidget.get_plot() #osciPlot.set_axis_title('bottom', 'Time (s)') #osciplot.add_item(make.legend("TR")) self.osciSignal = SignalFT(self, plot=osciPlot) self.osciSignal.addHCursor(0) self.osciSignal.addBounds() ############## # Time domain plot self.tdWidget = DockablePlotWidget(self, CurveWidget, curveplot_toolbar) self.tdWidget.calcFun.addFun('fs', lambda x: x, lambda x: x) self.tdWidget.calcFun.addFun('µm', lambda x: x*fsDelay*1e3, lambda x: x/fsDelay*1e-3) self.tdWidget.calcFun.addFun('mm', lambda x: x*fsDelay, lambda x: x/fsDelay) tdPlot = self.tdWidget.get_plot() #tdPlot.add_item(make.legend("TR")) self.tdSignal = SignalFT(self, plot=tdPlot) self.tdSignal.addVCursor(0) ################## # Frequency domain plot self.fdWidget = DockablePlotWidget(self, CurveWidget, curveplot_toolbar) self.fdWidget.calcFun.addFun('PHz', lambda x: x, lambda x: x) self.fdWidget.calcFun.addFun('THz', lambda x: x*1e3, lambda x: x*1e-3) # x = PHz -> 1e15, µm = 1e-6 self.fdWidget.calcFun.addFun('µm', lambda x: c0/x*1e-9, lambda x: c0/x*1e-9) self.fdWidget.calcFun.addFun('eV', lambda x: x, lambda x: x) fdplot = self.fdWidget.get_plot() #fqdplot.add_item(make.legend("TR")) self.fdSignal = SignalFT(self, plot=fdplot) ############## # Main window widgets self.tabwidget = DockableTabWidget(self) #self.tabwidget.setMaximumWidth(500) self.tiepieUi = TiePieUi(self) self.piUi = PiStageUi(self) #self.stage = self.piUi.stage self.tabwidget.addTab(self.tiepieUi, QIcon('icons/Handyscope_HS4.png'), _("Osci")) self.tabwidget.addTab(self.piUi, QIcon('icons/piController.png'), _("Stage")) self.add_dockwidget(self.tabwidget, _("Inst. sett.")) # self.setCentralWidget(self.tabwidget) self.osci_dock = self.add_dockwidget(self.osciCurveWidget, title=_("Osciloscope")) self.td_dock = self.add_dockwidget(self.tdWidget, title=_("Time Domain")) self.fd_dock = self.add_dockwidget(self.fdWidget, title=_("Frequency Domain")) ################ # connect signals self.piUi.startScanBtn.released.connect(self.startMeasureThr) self.piUi.stopScanBtn.released.connect(self.stopMeasureThr) self.piUi.xAxeChanged.connect(self.tdSignal.updateXAxe) self.piUi.xAxeChanged.connect(self.fdSignal.updateXAxe) self.piUi.niceBtn.released.connect(self.showMakeNicerWidget) self.tiepieUi.scpConnected.connect(self.startOsciThr) self.tiepieUi.xAxeChanged.connect(self.osciSignal.updateXAxe) self.tiepieUi.yAxeChanged.connect(self.osciSignal.updateYAxe) self.tiepieUi.triggLevelChanged.connect(self.osciSignal.setHCursor) #self.piUi.centerBtn.released.connect( # lambda x=None: self.piUi.setCenter(self.tdSignal.getVCursor())) self.tdSignal.plot.SIG_MARKER_CHANGED.connect( lambda x=None: self.piUi.newOffset(self.tdSignal.getVCursor())) self.osciCurveWidget.calcFun.idxChanged.connect(self.osciSignal.funChanged) self.tdWidget.calcFun.idxChanged.connect(self.tdSignal.funChanged) self.fdWidget.calcFun.idxChanged.connect(self.fdSignal.funChanged) self.updateOsciPlot.connect(self.osciSignal.updatePlot) self.updateTdPlot.connect(self.tdSignal.updatePlot) self.updateFdPlot.connect(lambda data: self.fdSignal.updatePlot(self.fdSignal.computeFFT(data))) ################ # create threads #self.osciThr = GenericThread(self.getOsciData) self.osciThr = QThread() self.osciThr.start() self.osciWorker = GenericWorker(self.getOsciData) self.osciWorker.moveToThread(self.osciThr) #self.measureThr = GenericThread(self.getMeasureData) self.measureThr = QThread() self.measureThr.start() self.measureWorker = GenericWorker(self.getMeasureData) self.measureWorker.moveToThread(self.measureThr) ################ # File menu file_menu = self.menuBar().addMenu(_("File")) self.quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), triggered=self.close) saveData = create_action(self, _("Save"), shortcut="Ctrl+S", icon=get_std_icon("DialogSaveButton"), tip=_("Save data"), triggered=self.saveData) triggerTest_action = create_action(self, _("Stop Osci"), shortcut="Ctrl+O", icon=get_icon('fileopen.png'), tip=_("Open an image"), triggered=self.stopOsciThr) add_actions(file_menu, (triggerTest_action, saveData, None, self.quit_action)) ############## # Eventually add an internal console (requires 'spyderlib') self.sift_proxy = SiftProxy(self) if DockableConsole is None: self.console = None else: import time, scipy.signal as sps, scipy.ndimage as spi ns = {'ftir': self.sift_proxy, 'np': np, 'sps': sps, 'spi': spi, 'os': os, 'sys': sys, 'osp': osp, 'time': time} msg = "Example: ftir.s[0] returns signal object #0\n"\ "Modules imported at startup: "\ "os, sys, os.path as osp, time, "\ "numpy as np, scipy.signal as sps, scipy.ndimage as spi" self.console = DockableConsole(self, namespace=ns, message=msg) self.add_dockwidget(self.console, _("Console")) ''' try: self.console.interpreter.widget_proxy.sig_new_prompt.connect( lambda txt: self.refresh_lists()) except AttributeError: print('sift: spyderlib is outdated', file=sys.stderr) ''' # Show main window and raise the signal plot panel self.show()
def get_icon(name, default="not_found.png"): """ Construct a QIcon from the file with specified name name, default: filenames with extensions """ return QIcon(get_image_file_path(name, default))
def icon(self): if icon is not None: return get_icon(icon) else: return QIcon()
def __init__(self): QMainWindow.__init__(self) self.stage = None self.stopOsci = False self.stopMeasure = False self.setWindowTitle(APP_NAME) ############### # Powermeter record curveplot_toolbar = self.addToolBar(_("Curve Plotting Toolbar")) self.curveWidget1 = DockablePlotWidget(self, CurveWidget, curveplot_toolbar) self.curveWidget1.calcFun.addFun('s', lambda x: x, lambda x: x) self.curveWidget1.calcFun.addFun('min', lambda x: x / 60, lambda x: x * 60) self.curveWidget1.calcFun.addFun('hour', lambda x: x / 3600, lambda x: x * 3600) plot1 = self.curveWidget1.get_plot() self.signal1 = SignalFT(self, plot=plot1) ############## # Main window widgets self.tabwidget = DockableTabWidget(self) #self.tabwidget.setMaximumWidth(500) self.maestroUi = MaestroUi(self) self.fileUi = FileUi(self) self.tabwidget.addTab(self.maestroUi, QIcon('icons/Handyscope_HS4.png'), _("Maestro")) self.tabwidget.addTab(self.fileUi, get_icon('filesave.png'), _('File')) self.add_dockwidget(self.tabwidget, _("Inst. sett.")) # self.setCentralWidget(self.tabwidget) self.dock1 = self.add_dockwidget(self.curveWidget1, title=_("Powermeter")) ################ # connect signals self.maestroUi.newPlotData.connect(self.signal1.updatePlot) self.curveWidget1.calcFun.idxChanged.connect(self.signal1.funChanged) self.fileUi.saveTxtBtn.released.connect(self.saveDataTxt) self.fileUi.saveHdfBtn.released.connect(self.saveDataHDF5) ''' self.piUi.startScanBtn.released.connect(self.startMeasureThr) self.piUi.stopScanBtn.released.connect(self.stopMeasureThr) self.piUi.xAxeChanged.connect(self.tdSignal.updateXAxe) self.piUi.xAxeChanged.connect(self.fdSignal.updateXAxe) self.piUi.niceBtn.released.connect(self.showMakeNicerWidget) self.tiepieUi.scpConnected.connect(self.startOsciThr) self.tiepieUi.xAxeChanged.connect(self.osciSignal.updateXAxe) self.tiepieUi.yAxeChanged.connect(self.osciSignal.updateYAxe) self.tiepieUi.triggLevelChanged.connect(self.osciSignal.setHCursor) #self.piUi.centerBtn.released.connect( # lambda x=None: self.piUi.setCenter(self.tdSignal.getVCursor())) self.tdSignal.plot.SIG_MARKER_CHANGED.connect( lambda x=None: self.piUi.newOffset(self.tdSignal.getVCursor())) self.tdWidget.calcFun.idxChanged.connect(self.tdSignal.funChanged) self.fdWidget.calcFun.idxChanged.connect(self.fdSignal.funChanged) self.updateOsciPlot.connect(self.osciSignal.updatePlot) self.updateTdPlot.connect(self.tdSignal.updatePlot) self.updateFdPlot.connect(lambda data: self.fdSignal.updatePlot(self.fdSignal.computeFFT(data))) ''' ################ # create threads #self.osciThr = GenericThread(self.getOsciData) ''' self.osciThr = QThread() self.osciThr.start() self.osciWorker = GenericWorker(self.getOsciData) self.osciWorker.moveToThread(self.osciThr) #self.measureThr = GenericThread(self.getMeasureData) self.measureThr = QThread() self.measureThr.start() self.measureWorker = GenericWorker(self.getMeasureData) self.measureWorker.moveToThread(self.measureThr) ''' ################ # File menu file_menu = self.menuBar().addMenu(_("File")) self.quit_action = create_action( self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), triggered=self.close) saveData = create_action(self, _("Save"), shortcut="Ctrl+S", icon=get_std_icon("DialogSaveButton"), tip=_("Save data"), triggered=self.saveDataHDF5) #add_actions(file_menu, (triggerTest_action, saveData, None, self.quit_action)) ############## # Eventually add an internal console (requires 'spyderlib') self.sift_proxy = SiftProxy(self) if DockableConsole is None: self.console = None else: import time, scipy.signal as sps, scipy.ndimage as spi ns = { 'ftir': self.sift_proxy, 'np': np, 'sps': sps, 'spi': spi, 'os': os, 'sys': sys, 'osp': osp, 'time': time } msg = "Example: ftir.s[0] returns signal object #0\n"\ "Modules imported at startup: "\ "os, sys, os.path as osp, time, "\ "numpy as np, scipy.signal as sps, scipy.ndimage as spi" self.console = DockableConsole(self, namespace=ns, message=msg) self.add_dockwidget(self.console, _("Console")) ''' try: self.console.interpreter.widget_proxy.sig_new_prompt.connect( lambda txt: self.refresh_lists()) except AttributeError: print('sift: spyderlib is outdated', file=sys.stderr) ''' # Show main window and raise the signal plot panel self.show()