Exemplo n.º 1
0
        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)
Exemplo n.º 2
0
    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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
 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
Exemplo n.º 10
0
 def eventFilter(self, obj, event):
   if event.type() == QEvent.KeyPress:
     pass
   return QObject.eventFilter(self, obj, event)
Exemplo n.º 11
0
 def eventFilter(self, obj, event):
     if event.type() == QEvent.KeyPress:
         pass
     return QObject.eventFilter(self, obj, event)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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)
Exemplo n.º 14
0
    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)