def mouse_dbl_click(self, widget: QWidget, pos: QPoint = QPoint(0, 0), btn: int = Qt.LeftButton, delay: float = 0) -> None: """Send mouse double click to widget""" widget.setFocus() mouse_dbl = self._mouse_event(QEvent.MouseButtonDblClick, pos, btn) QCoreApplication.postEvent(widget, mouse_dbl) self.sleep(delay)
def mouse_click(self, widget: QWidget, pos: QPoint = QPoint(0, 0), btn: int = Qt.LeftButton, delay: float = 0) -> None: """Send mouse click to widget""" # TODO: if delete a comment from the next line, the program crashes # Process finished with exit code 139 (interrupted signal 11: SIGSEGV) # widget.setFocus() # !!! find the cause of the error !!! mouse_press = self._mouse_event(QEvent.MouseButtonPress, pos, btn) mouse_release = self._mouse_event(QEvent.MouseButtonRelease, pos, btn) QCoreApplication.postEvent(widget, mouse_press) QCoreApplication.postEvent(widget, mouse_release) self.sleep(delay)
def key_click(self, widget: QWidget, key: int = 0, txt: str = "", modifier: int = Qt.NoModifier, delay: float = 0) -> None: """Send press key event to widget""" widget.setFocus() key_press = QKeyEvent(QEvent.KeyPress, key, modifier, txt, False) key_release = QKeyEvent(QEvent.KeyRelease, key, modifier, txt, False) QCoreApplication.postEvent(widget, key_press) QCoreApplication.postEvent(widget, key_release) self.sleep(delay)
def update_project(self, update_function, updated_properties=None, on_completed=None): """function::update_project(self, update_function) Calls the update_function to perform the desired updates """ self.dirty = True result = update_function(None) if updated_properties: for prop in updated_properties: self._on_project_updated(prop) else: self._on_project_updated(None) if on_completed: QCoreApplication.postEvent( self, UpdateCompleteEvent(on_completed, result))
def key_clicks(self, widget: QWidget, txt: str = "", modifier: int = Qt.NoModifier, delay: float = 0) -> None: """Send string to widget""" timeout: float = self._tests_delay_key if delay else 0 if not self.is_interactive(): timeout = 0 for char in txt: key = QKeyEvent(QEvent.KeyPress, 0, modifier, char, False) QCoreApplication.postEvent(widget, key) if timeout: self.sleep(timeout) self.sleep(delay)
def run(self): if self._busy_args: QCoreApplication.postEvent(self._task_runner, BusyEvent(self._busy_args)) try: result = self._f(*self._args.args, **self._args.kwargs) except TaskCancelled: QCoreApplication.postEvent(self._task_runner, CancelledEvent(self._on_cancelled)) #pylint: disable=broad-except except Exception as e: QCoreApplication.postEvent(self._task_runner, ErrorEvent(e, self._on_error, self._error_description)) #pylint: enable=broad-except else: QCoreApplication.postEvent(self._task_runner, ResultEvent(result, self._on_completed))
def update_progress(self, percent, message): QCoreApplication.postEvent(self, ProgressUpdatedEvent(float(percent), message))
def _on_project_updated(self, prop): QCoreApplication.postEvent(self, PropertyUpdatedEvent(prop))