def scroll_line(key, window, focus_widget, key_filter, *args, **kwargs): if focus_widget is not None: with key_filter.disable_filtering: QApplication.sendEvent( focus_widget, QKeyEvent(QEvent.KeyPress, key, Qt.KeyboardModifiers(0))) return True
def scroll_to_boundary(top, window, focus_widget, key_filter, *args, **kwargs): if focus_widget is not None: with key_filter.disable_filtering: key = Qt.Key_Home if top else Qt.Key_End QApplication.sendEvent( focus_widget, QKeyEvent(QEvent.KeyPress, key, Qt.KeyboardModifiers(0))) return True
def scroll_page(up, window, focus_widget, key_filter, *args, **kwargs): if focus_widget is not None: with key_filter.disable_filtering: key = Qt.Key_PageUp if up else Qt.Key_PageDown QApplication.sendEvent( focus_widget, QKeyEvent(QEvent.KeyPress, key, Qt.KeyboardModifiers(0))) return True
def send_text_using_keys(self, text): if self.host_widget is not None and not sip.isdeleted( self.host_widget): self.host_widget.setFocus(Qt.OtherFocusReason) with QApplication.instance().key_filter.disable_filtering: for ch in text: key = getattr(Qt, f'Key_{ch.upper()}', Qt.Key_A) QApplication.sendEvent( self.host_widget, QKeyEvent(QKeyEvent.KeyPress, key, Qt.KeyboardModifiers(0), ch)) # Ensure key events are delivered before any other processing while QApplication.instance().processEvents(): pass