def create_context_menu(self): menu = QMenu() menu.setToolTipsVisible(True) self._add_zoom_actions_to_menu(menu) if self.something_is_selected: filter_bw = Filter.read_configured_filter_bw() text = self.tr("Apply bandpass filter (filter bw={0:n})".format(filter_bw)) create_from_frequency_selection = menu.addAction(text) create_from_frequency_selection.triggered.connect(self.on_create_from_frequency_selection_triggered) create_from_frequency_selection.setIcon(QIcon.fromTheme("view-filter")) try: cancel_button = " or ".join(k.toString() for k in QKeySequence.keyBindings(QKeySequence.Cancel)) except Exception as e: logger.debug("Error reading cancel button: " + str(e)) cancel_button = "Esc" create_from_frequency_selection.setToolTip("You can abort filtering with <b>{}</b>.".format(cancel_button)) configure_filter_bw = menu.addAction(self.tr("Configure filter bandwidth...")) configure_filter_bw.triggered.connect(self.on_configure_filter_bw_triggered) configure_filter_bw.setIcon(QIcon.fromTheme("configure")) menu.addSeparator() export_fta_action = menu.addAction("Export spectrogram...") export_fta_action.triggered.connect(self.on_export_fta_action_triggered) return menu
def create_context_menu(self): menu = QMenu() menu.setToolTipsVisible(True) self._add_zoom_actions_to_menu(menu) if self.something_is_selected: filter_bw = Filter.read_configured_filter_bw() text = self.tr( "Apply bandpass filter (filter bw={0:n})".format(filter_bw)) create_from_frequency_selection = menu.addAction(text) create_from_frequency_selection.triggered.connect( self.on_create_from_frequency_selection_triggered) create_from_frequency_selection.setIcon( QIcon.fromTheme("view-filter")) try: cancel_button = " or ".join( k.toString() for k in QKeySequence.keyBindings(QKeySequence.Cancel)) except Exception as e: logger.debug("Error reading cancel button: " + str(e)) cancel_button = "Esc" create_from_frequency_selection.setToolTip( "You can abort filtering with <b>{}</b>.".format( cancel_button)) configure_filter_bw = menu.addAction( self.tr("Configure filter bandwidth...")) configure_filter_bw.triggered.connect( self.on_configure_filter_bw_triggered) configure_filter_bw.setIcon(QIcon.fromTheme("configure")) return menu
def bind_all_standard_keys(standard_key, handler_cb, parent=None, context=Qt.WindowShortcut): """Workaround for Qt apparently only binding the first StandardKey when it's fed into QShortcut @type standard_key: C{QtGui.QKeySequence.StandardKey} @type handler_cb: C{function} @type parent: C{QObject} @type context: C{QtCore.Qt.ShortcutContext} @rtype: C{[QtWidgets.QShortcut]} """ results = [] if isinstance(standard_key, QKeySequence.StandardKey): hotkeys = QKeySequence.keyBindings(standard_key) else: hotkeys = [standard_key] for hotkey in hotkeys: shortcut = QShortcut(hotkey, parent) shortcut.setContext(context) shortcut.activated.connect(handler_cb) results.append(shortcut) return results
def createToolBar(self) -> QToolBar: navigationBar = QToolBar(self.tr("Navigation")) navigationBar.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) navigationBar.toggleViewAction().setEnabled(False) self.m_historyBackAction = QAction(self) backShortcuts = QKeySequence.keyBindings(QKeySequence.Back) for i, x in enumerate(reversed(backShortcuts)): if x[0] == Qt.Key_Backspace: # Chromium already handles navigate on backspace when appropriate. backShortcuts.pop(i) # For some reason Qt doesn't bind the dedicated Back key to Back. backShortcuts.append(QKeySequence(Qt.Key_Back)) self.m_historyBackAction.setShortcuts(backShortcuts) self.m_historyBackAction.setIconVisibleInMenu(False) self.m_historyBackAction.setIcon(QIcon(":go-previous.png")) self.m_historyBackAction.triggered.connect( lambda: self.m_tabWidget.triggerWebPageAction(QWebEnginePage.Back)) navigationBar.addAction(self.m_historyBackAction) self.m_historyForwardAction = QAction(self) fwdShortcuts = QKeySequence.keyBindings(QKeySequence.Forward) for i, x in enumerate(reversed(fwdShortcuts)): if x[0] & Qt.Key_unknown == Qt.Key_Backspace: fwdShortcuts.pop(i) fwdShortcuts.append(QKeySequence(Qt.Key_Forward)) self.m_historyForwardAction.setShortcuts(fwdShortcuts) self.m_historyForwardAction.setIconVisibleInMenu(False) self.m_historyForwardAction.setIcon(QIcon(":go-next.png")) self.m_historyForwardAction.triggered.connect( lambda: self.m_tabWidget.triggerWebPageAction(QWebEnginePage. Forward)) navigationBar.addAction(self.m_historyForwardAction) self.m_stopReloadAction = QAction(self) self.m_stopReloadAction.triggered.connect( lambda: self.m_tabWidget.triggerWebPageAction( QWebEnginePage.WebAction(self.m_stopReloadAction.data()))) navigationBar.addAction(self.m_stopReloadAction) navigationBar.addWidget(self.m_urlLineEdit) size = self.m_urlLineEdit.sizeHint().height() navigationBar.setIconSize(QSize(size, size)) return navigationBar
def initUI(self): # добавление меню бара menubar = self.menuBar() # добавление пунктов меню fileMenu = menubar.addMenu('&File') # значек & перед одной из букв в названии менюшки # позволяет выбирать его по нажатии буквы на клавиатуре поле альта # меню "открыть файл" fileOpenAction = QAction('&Open file', self) # сочетание клавиш для этого действия # fileOpenAction.setShortcut(QKeySequence(self.tr('CTRL+F'))) fileOpenAction.setShortcuts(QKeySequence.keyBindings( QKeySequence.Open)) # пояснение в строке состояния fileOpenAction.setStatusTip('Открыть файл') # присоединение действия к сигналу fileOpenAction.triggered.connect(self.showOpenDialog) # меню выход из программы exitAction = QAction(QIcon('exit.png'), '&Exit', self) exitAction.setShortcut(QKeySequence(self.tr('CTRL+Q'))) # Windows не имеет сочетания клавишь для выхода # exitAction.setShortcuts(QKeySequence.keyBindings(QKeySequence.Quit)) exitAction.setStatusTip('Exit application') exitAction.triggered.connect(qApp.quit) # добавление в меню 'файл' fileMenu.addAction(fileOpenAction) fileMenu.addAction(exitAction) self.statusBar() self.setGeometry(300, 300, 300, 400) self.setWindowTitle('BitCrusher') self.intervalSpin_N = QSpinBox(self) self.intervalSpin_N.setRange(1, 500) self.intervalSpin_N.setMaximum(500) self.intervalSpin_N.setValue(20) self.intervalSpin_Fs = QSpinBox(self) self.intervalSpin_Fs.setRange(1, 2000) self.intervalSpin_Fs.setMaximum(2000) self.intervalSpin_Fs.setValue(200) self.intervalSpin_Fx = QSpinBox(self) self.intervalSpin_Fx.setRange(1, 2000) self.intervalSpin_Fx.setMaximum(2000) self.intervalSpin_Fx.setValue(300) self.textEdit = QTextEdit(self) self.textEdit.setReadOnly(True) # кнопка self.resButton = QPushButton("Применить фильтр") # кнопка self.sinButton = QPushButton("Нужно больше (золота) наглядности") def sinButtonCilcked(): # Порядок фильтра N = self.intervalSpin_N.value() Fs = self.intervalSpin_Fs.value() Fx = self.intervalSpin_Fx.value() self.textEdit.setText('True') # main_sin(N, Fs, Fx) def buttonCilcked(): if manager.get_current(): # Порядок фильтра N = self.intervalSpin_N.value() Fs = self.intervalSpin_Fs.value() Fx = self.intervalSpin_Fx.value() def myLogger(*args): console = self.textEdit for i in args: console.append(str(i)) if manager.get_current() != "": (data, nchannels, sampwidth, framerate, nframes, comptype) = open_file(manager.get_current(), myLogger) f_to_save_in_1 = self.showSaveDialog() f_to_save_in_1 = f_to_save_in_1[ 0][:-4] + "_writeframesraw_" + f_to_save_in_1[0][-4:] f_to_save_in_1 = open(f_to_save_in_1, 'wb') main(data, nchannels, sampwidth, framerate, comptype, N, myLogger, f_to_save_in_1, Fs, Fx) f_to_save_in_1.close() self.resButton.clicked.connect(buttonCilcked) self.sinButton.clicked.connect(sinButtonCilcked) # вуктикальное расположение виджетов vbox = QVBoxLayout() wdg = QWidget() self.setCentralWidget(wdg) # добавляет строку с парой виджет виджет или строка виджет form = QFormLayout() form.addRow("Порядок фильтра", self.intervalSpin_N) form.addRow("Частота полосы пропускания", self.intervalSpin_Fs) form.addRow("Частота полосы затухания", self.intervalSpin_Fx) # добавлять сюда vbox.addLayout(form) vbox.addWidget(self.textEdit) vbox.addWidget(self.resButton) vbox.addWidget(self.sinButton) wdg.setLayout(vbox) self.show()
def keybinding(attr): """Return keybinding""" ks = getattr(QKeySequence, attr) # return from_qvariant(QKeySequence.keyBindings(ks)[0], str) return QKeySequence.keyBindings(ks)[0]
def keybinding(attr): """Return keybinding""" ks = getattr(QKeySequence, attr) return (QKeySequence.keyBindings(ks)[0], str)