def keyPressEvent(self, event: QEvent): super().keyPressEvent(event) if event.key() in [Qt.Key_Space, Qt.Key_Escape]: event.accept() self.accept.emit() else: event.ignore()
def eventFilter(self, widget: QObject, event: QEvent): """ Event filter to ignore wheel events in comboboxes to prevent accidental changes to them. """ if event.type( ) == QEvent.Wheel: # and widget and not widget.hasFocus(): event.ignore() return True return QObject.eventFilter(self, widget, event)
def keyPressEvent(self, event: QEvent): key = event.key() logger.info("keyPressEvent: %s", key) if key in [Qt.Key_Q]: event.accept() self.quit.emit() else: event.ignore()
def eventFilter(self, widget: QObject, event: QEvent): """ Event filter to ignore wheel events in comboboxes to prevent accidental changes to them. """ if event.type() == QEvent.Wheel and widget and not widget.hasFocus(): event.ignore() return True # if event.type() == QEvent.MouseButtonPress: # self.cell_clicked.emit(event.) return QObject.eventFilter(self, widget, event)
def closeEvent(self, event: QEvent = None): """Overloaded, allows saving changes or canceling close :param event: Any QEvent """ if event: event.ignore() self.workflows.file_quit() # has @handle_changed_since_save decorator
def event(self, event: QEvent) -> bool: if event.type() == QEvent.ToolTip: tt = self.isValidIndex(self._hoverIndex) and self.tabToolTip( self._hoverIndex) if tt: QToolTip.showText(event.globalPos(), tt, self, self._hoverRect) else: QToolTip.hideText() event.ignore() return True return super().event(event)
def closeEvent(self, e: QtCore.QEvent) -> None: """ Capture event close. """ self.frameGeometry() if self.focusWidget(): parent = self.focusWidget().parentWidget() if parent: fdb = cast(flfielddb.FLFieldDB, parent) acf_ = getattr(fdb, "autoComFrame_", None) if acf_ and acf_.autoComFrame_.isVisible(): acf_.hide() return if self.cursor_: try: levels = self.cursor_.transactionLevel() - self.initTransLevel if levels > 0: self.cursor_.rollbackOpened( levels, "Se han detectado transacciones no finalizadas en la última operación.\n" "Se van a cancelar las transacciones pendientes.\n" "Los últimos datos introducidos no han sido guardados, por favor\n" "revise sus últimas acciones y repita las operaciones que no\n" "se han guardado.\n" "FLFormRecordDB::closeEvent: %s %s" % (levels, self.name()), ) except Exception: print( "ERROR: FLFormRecordDB @ closeEvent :: las transacciones aún no funcionan." ) if self.accepted_: if not self.cursor_.commit(): return self.afterCommitTransaction() else: if not self.cursor_.rollback(): e.ignore() return # else: # self.cursor_.select() self.closed.emit() self.setCursor(None) else: self.closed.emit() super(FLFormRecordDB, self).closeEvent(e) self.deleteLater()
def keyPressEvent(self, e: QtCore.QEvent): if e.key() == 16777223: # delete if len(self.text()): self.last_text = self.text() self.setText("") elif e.key() == 90 and e.modifiers( ) == QtCore.Qt.ControlModifier: # ctrl+z if self.last_text: self.setText(self.last_text) self.last_text = None else: e.ignore()
def keyPressEvent(self, event: QtCore.QEvent): if event.key() == 90 and event.modifiers( ) == QtCore.Qt.ControlModifier: if self.deleted_domain: domain = self.deleted_domain self.addDomain( domain[1], domain[0], domain[2] ) # addDomain(name, id_) / domain = (id_, name, indexAt) if hasattr(self.parent.window, "config"): self.parent.window.config.write("peers", (domain[2], (domain[0], domain[1]))) self.deleted_domain = None else: event.ignore()
def keyPressEvent(self, event: QtCore.QEvent): if event.key() == 90 and event.modifiers( ) == QtCore.Qt.ControlModifier: if self.deleted_peer: peer = self.deleted_peer self.addPeer( peer[1], peer[0], peer[2] ) # addPeer(name, id_) / peer = (id_, name, indexAt) if hasattr(self.parent.window, "config"): self.parent.window.config.write("peers", (peer[2], (peer[0], peer[1]))) self.deleted_peer = None else: event.ignore()
def closeEvent(self, event: QEvent) -> None: if self._closing_state == ClosingState.CONFIRMED: self._api.gui.terminated.emit() event.accept() elif self._closing_state == ClosingState.WAITING_FOR_CONFIRMATION: event.ignore() elif self._closing_state == ClosingState.READY: def on_close(task: "asyncio.Future[bool]") -> None: if task.result(): self._closing_state = ClosingState.CONFIRMED self.close() else: self._closing_state = ClosingState.READY self._closing_state = ClosingState.WAITING_FOR_CONFIRMATION task = asyncio.ensure_future( self._api.gui.confirm_unsaved_changes()) task.add_done_callback(on_close) event.ignore()
def closeEvent(self, event: QtCore.QEvent) -> None: if self._closing_state == ClosingState.Confirmed: self._api.gui.terminated.emit() event.accept() elif self._closing_state == ClosingState.WaitingForConfirmation: event.ignore() elif self._closing_state == ClosingState.Ready: def on_close(task: "asyncio.Future[bool]") -> None: if task.result(): self._closing_state = ClosingState.Confirmed self.close() else: self._closing_state = ClosingState.Ready self._closing_state = ClosingState.WaitingForConfirmation task = asyncio.ensure_future( self._api.gui.confirm_unsaved_changes() ) task.add_done_callback(on_close) event.ignore()
def closeEvent(self, event: QEvent) -> None: """Trap exit.""" quit_msg = "Are you sure you want to exit?" # noinspection PyCallByClass,PyTypeChecker reply = QMessageBox.question(self, 'Really exit?', quit_msg, QMessageBox.Yes, QMessageBox.No) if reply != QMessageBox.Yes: event.ignore() return # "Really sure?" if self.task_running: quit_msg = ("A TASK IS RUNNING! Are you <b>really</b> sure " "you want to exit?") # noinspection PyCallByClass,PyTypeChecker reply = QMessageBox.question(self, 'Really exit?', quit_msg, QMessageBox.Yes, QMessageBox.No) if reply != QMessageBox.Yes: event.ignore() return # If subthreads aren't shut down, we get a segfault when we quit. # However, right now, signals aren't being processed because we're in # the GUI message loop. So we need to defer the call if subthreads are # running if not self.anything_running(): self.exit_kill_log.emit() event.accept() # actually quit return # Now stop everything log.warning("Waiting for threads to finish...") self.exit_pending = True if self.whisker_owner: self.whisker_owner.stop() # Will get a callback to whisker_owner_finished event.ignore() # don't actually quit
def event(self, a0: QtCore.QEvent) -> bool: if isinstance(a0, QtGui.QKeyEvent): if a0.key() == Qt.Key_Escape: a0.ignore() return True return super(Dlg_Compact, self).event(a0)
def eventFilter(self, obj: QtCore.QObject, event: QtCore.QEvent) -> bool: if event.type() == QtCore.QEvent.Wheel: event.ignore() return True return False
def eventFilter( self, source: QWidget, ev: QEvent, ) -> None: ''' Qt global event filter: return `False` to pass through and `True` to filter event out. https://doc.qt.io/qt-5/qobject.html#eventFilter https://doc.qt.io/qtforpython/overviews/eventsandfilters.html#event-filters ''' etype = ev.type() # TODO: turn this on and see what we can filter by default (such # as mouseWheelEvent). # print(f'ev: {ev}') if etype not in self._event_types: return False # XXX: we unpack here because apparently doing it # after pop from the mem chan isn't showing the same # event object? no clue wtf is going on there, likely # something to do with Qt internals and calling the # parent handler? if etype in {QEvent.KeyPress, QEvent.KeyRelease}: msg = KeyboardMsg( event=ev, etype=etype, key=ev.key(), mods=ev.modifiers(), txt=ev.text(), ) # TODO: is there a global setting for this? if ev.isAutoRepeat() and self._filter_auto_repeats: ev.ignore() # filter out this event and stop it's processing # https://doc.qt.io/qt-5/qobject.html#installEventFilter return True # NOTE: the event object instance coming out # the other side is mutated since Qt resumes event # processing **before** running a ``trio`` guest mode # tick, thus special handling or copying must be done. elif etype in MOUSE_EVENTS: # print('f mouse event: {ev}') msg = MouseMsg( event=ev, etype=etype, button=ev.button(), ) else: msg = ev # send event-msg to async handler self._send_chan.send_nowait(msg) # **do not** filter out this event # and instead forward to the source widget # https://doc.qt.io/qt-5/qobject.html#installEventFilter return False