def eventFilter(self, obj, event): if event.type() == QEvent.KeyPress and isinstance(obj, QWindow): # print(obj, event.text(), "GUI---------") self.KeyPress.emit(event) return False # return False return QObject.eventFilter(self, obj, event)
def eventFilter(self, obj, event): if event.type() == QEvent.GraphicsSceneMouseDoubleClick: obj.setTextInteractionFlags(Qt.TextEditable) return True elif event.type() == QEvent.GraphicsSceneHoverLeave: obj.setTextInteractionFlags(Qt.NoTextInteraction) return QObject.eventFilter(self, obj, event)
def eventFilter(self, obj, event): '''Just checks if is the correct object and event type incrementing counter until reaching the limit. After that it stops filtering the events for the object.''' if (self.obj == obj): if isinstance(event, self.event_type) and self.events_handled < 5: self.events_handled += 1 return True else: self.events_bypassed += 1 return False else: return QObject.eventFilter(self, obj, event)
def eventFilter(self, obj, event): '''Just checks if is the correct object and event type incrementing counter until reaching the limit. After that it stops filtering the events for the object.''' if (self.obj == obj): if isinstance(event, self.event_type) and self.events_handled < 5: self.events_handled += 1 return True else: self.events_bypassed += 1 return False else: return QObject.eventFilter(self, obj, event)
def eventFilter(self, watched: PySide2.QtCore.QObject, event: PySide2.QtCore.QEvent) -> bool: """ 事件过滤器 """ if watched.inherits("QToolButton"): # 这里会警告期望输入bytes实际输入str,应该是qt本身的问题,因为文档和实际运行都是str btn: QToolButton = watched index: int = self.btns.index(btn) if index >= 0: if event.type() == QEvent.Enter: btn.setIcon(QIcon(self.pix_dark[index])) elif event.type() == QEvent.Leave: if btn.isChecked(): btn.setIcon(QIcon(self.pix_dark[index])) else: btn.setIcon(QIcon(self.pix_normal[index])) return QObject.eventFilter(watched, event)
def eventFilter(self, obj, event): if event.type() == QEvent.KeyPress: key = event.key() for key_filter_data in self.filters: if key_filter_data[2] is not None: if obj.window() != key_filter_data[2]: continue if key == key_filter_data[0]: key_filter_data[1]() else: return True else: # standard event processing try: return QObject.eventFilter(self, obj, event) except RuntimeError: return True
def eventFilter(self, target: QObject, event: QEvent) -> bool: """Qt Event Filter: This event filter is used when display QDialogs, such as message boxes.""" # FOR MESSAGEBOX: if isinstance(event, QResizeEvent): assert self.__window is not None geometry = self.__window.geometry() if sys.platform in ['darwin']: self.setFixedSize( geometry.width() + self.__style.window.SHADOW_RADIUS_PX * 2, # macOS, Windows (?) geometry.height() + self.__style.window.SHADOW_RADIUS_PX * 2) else: self.setFixedSize( geometry.width() + self.__style.window.SHADOW_RADIUS_PX * 2, geometry.height() + self.__style.window.SHADOW_RADIUS_PX * 2 + self.__titlebar_height) return True return QObject.eventFilter(self, target, event)
def eventFilter(self, obj, event): if event.type() == QEvent.Type.Wheel: print("Ate key press") return True elif event.type() == QEvent.Type.MouseButtonPress: if self.mainWindow.wordDeck.cardNum > 0 and self.mainWindow.indexOfCurrentTab != self.mainWindow.ui.tabBar.tabAt(event.pos()): self.index = self.mainWindow.ui.tabBar.tabAt(event.pos()) self.tabDialog = ChangeTabDialog(self.mainWindow, self.index) self.tabDialog.show() return True else: if self.mainWindow.ui.tabBar.tabAt(event.pos()) == 1: print("BEGIN NEW SESSION, CREATE TYPING EXERCISE OBJECTS AND ADD DATE TO DATABASE") self.typingExercise = TypingExercise(self.mainWindow, self.mainWindow.wordDeck) self.typingExercise.resetUi() elif self.mainWindow.ui.tabBar.tabAt(event.pos()) == 2: self.flashcardExercise = FlashcardExercise(self.mainWindow, self.mainWindow.wordDeck) self.flashcardExercise.resetUi() print("BEGIN NEW SESSION, CREATE FLASHCARD EXERCISE OBJECTS AND ADD DATE TO DATABASE") elif self.mainWindow.ui.tabBar.tabAt(event.pos()) == 3: self.quizExercise = QuizExercise(self.mainWindow, self.mainWindow.wordDeck) # Object for controlling quiz module print("BEGIN NEW SESSION, CREATE QUIZ EXERCISE OBJECTS AND ADD DATE TO DATABASE") self.quizExercise.resetUi() self.mainWindow.indexOfCurrentTab = self.mainWindow.ui.tabBar.tabAt(event.pos()) return False else: # standard event processing return QObject.eventFilter(self, obj, event)
def eventFilter(self, obj, event): if event.type() == QEvent.KeyPress: if event.matches(QKeySequence.NextChild) or event.matches( QKeySequence.PreviousChild): return True return QObject.eventFilter(self, obj, event) # Pass event further
def eventFilter(self, obj, event): if event.type() == QEvent.KeyPress: pass return QObject.eventFilter(self, obj, event)
def eventFilter(self, obj, event): if event.type() == QEvent.KeyPress: pass return QObject.eventFilter(self, obj, event)
def eventFilter(self, obj, event): if event.type() == QEvent.KeyPress: if event.key() == Qt.Key_Delete: self.remove_selected_rows() return True elif event.matches(QKeySequence.Copy): s_model = self.table_view.selectionModel() if s_model.hasSelection(): selection_range = s_model.selection().constFirst() table_str = "" clipboard = QGuiApplication.clipboard() for i in range(selection_range.top(), selection_range.bottom() + 1): row_value = [] for j in range(selection_range.left(), selection_range.right() + 1): row_value.append(s_model.model().index(i, j).data()) table_str += "\t".join(row_value) + "\n" clipboard.setText(table_str) return True elif event.matches(QKeySequence.Paste): s_model = self.table_view.selectionModel() if s_model.hasSelection(): clipboard = QGuiApplication.clipboard() table_str = clipboard.text() table_rows = table_str.splitlines( ) # splitlines avoids an empty line at the end selection_range = s_model.selection().constFirst() first_row = selection_range.top() first_col = selection_range.left() last_col_idx = 0 last_row_idx = 0 for i in range(len(table_rows)): model_i = first_row + i if model_i < self.model.rowCount(): row_cols = table_rows[i].split("\t") for j in range(len(row_cols)): model_j = first_col + j if model_j < self.model.columnCount(): self.model.setData( self.model.index(model_i, model_j), row_cols[j], Qt.EditRole) if model_j > last_col_idx: last_col_idx = model_j if model_i > last_row_idx: last_row_idx = model_i first_index = self.model.index(first_row, first_col) last_index = self.model.index(last_row_idx, last_col_idx) self.model.dataChanged.emit(first_index, last_index) return True else: return QObject.eventFilter(self, obj, event) else: return QObject.eventFilter(self, obj, event) return QObject.eventFilter(self, obj, event)
def eventFilter(self, obj: QObject, event: QEvent) -> bool: if self.handleEvents and event.type() == QEvent.KeyPress: self.keyPressEvent(event) return True return QObject.eventFilter(self, obj, event)
def eventFilter(self, obj, event): if event.type() == QEvent.GraphicsSceneMousePress: if event.button() == Qt.MouseButton.LeftButton: self.mouse_pressed = True self.mouse_pressed_x, self.mouse_pressed_y = event.pos().x( ), event.pos().y() if self.draw_ellipse: ellipsis = QGraphicsEllipseItem(self.chart) ellipsis.setZValue(12) ellipsis.setBrush(QBrush(QColor(244, 67, 54, 50))) ellipsis.setPen(QPen(Qt.transparent)) self.ellipses.append(ellipsis) elif self.write_text: for t in self.texts: r = QRectF() r.setTopLeft(t.pos()) r.setWidth(t.boundingRect().width()) r.setHeight(t.boundingRect().height()) if r.contains(self.mouse_pressed_x, self.mouse_pressed_y): return True """ The user clicked over an area where there is no text. So we create one. """ text = QGraphicsTextItem(self.chart) text.setZValue(12) text.setPos( QPointF(self.mouse_pressed_x, self.mouse_pressed_y)) text.setPlainText("label") text.setAcceptHoverEvents(True) text.setTabChangesFocus(True) text.setFlags(QGraphicsTextItem.ItemIsMovable) text.installEventFilter(self.text_event_filter) self.texts.append(text) return True elif event.button() == Qt.MouseButton.RightButton: x, y = event.pos().x(), event.pos().y() for e in self.ellipses: if e.rect().contains(x, y): e.hide() self.ellipses.remove(e) for t in self.texts: r = QRectF() r.setTopLeft(t.pos()) r.setWidth(t.boundingRect().width()) r.setHeight(t.boundingRect().height()) if r.contains(x, y): t.hide() self.texts.remove(t) return True return QObject.eventFilter(self, obj, event) elif event.type() == QEvent.GraphicsSceneMouseRelease: self.mouse_pressed = False return True elif event.type() == QEvent.GraphicsSceneMouseMove: if self.mouse_pressed: if self.draw_ellipse: x, y = event.pos().x(), event.pos().y() width = x - self.mouse_pressed_x height = y - self.mouse_pressed_y self.ellipses[-1].setRect(self.mouse_pressed_x, self.mouse_pressed_y, width, height) return True return QObject.eventFilter(self, obj, event) return QObject.eventFilter(self, obj, event)