示例#1
0
    def eventFilter(self, obj, event):
        if event.type() == QEvent.MouseButtonPress:
            if event.button() == Qt.LeftButton:
                # if there already selected file unselect it
                if self.selected and self.files[self.selected] != obj:
                    self.files[self.selected].setProperty('selected', None)
                    self.updateStyle(self.files[self.selected])
                # if current object is not selected - select it and update
                # selected index
                if obj.property('selected') == None:
                    obj.setProperty('selected', True)
                    self.selected = self.files.index(obj)
                # if current object is selected - unselect it
                else:
                    obj.setProperty('selected', None)
                    self.selected = None
                self.updateStyle(obj)
        # open directory or file if it's double clicked
        if event.type() == QEvent.MouseButtonDblClick:
            self.openPath(os.path.join(self.currentDirectory, obj.text()))
        if event.type() == QEvent.KeyPress:
            # for selecting files/directories by keys (dev)
            # if event.key() == Qt.Key_Down:
            #     self.files[self.files.index(obj)+1].setProperty('selected', True)
            # go to directory by typing it in address bar and pressing enter
            if event.key() == Qt.Key_Return and obj == self.curPathLine:
                self.openPath(self.curPathLine.text())

        return QObject.event(obj, event)
示例#2
0
文件: Scene.py 项目: Janonard/EngineL
 def event(self, event):
     """
     This non-constant method checks for the timer to finish.
     """
     if event.type() == QEvent.Timer:
         self.killTimer(self.timer_id)
         self.end.emit()
         return True
     return QObject.event(self, event)
示例#3
0
    def eventFilter(self, obj, event):
        if event.type() == QEvent.MouseButtonPress and obj.isEnabled():
            if event.button() == Qt.LeftButton and not obj.text():
                x, y = map(int, obj.objectName().split())
                self.sapper.next_step(y, x, 'O')
            elif event.button() == Qt.RightButton:
                x, y = map(int, obj.objectName().split())
                self.sapper.next_step(y, x, 'F')

            # Далее происходить по сути перерисовка всего игрового поля
            # это тормозит игру, нужно менять только измененные клетки, а не все подряд
            # нужно подумать над этим!!!
            # пришла такая идея:
            # хранить бутоны не в списке а в двумерном списке или в словаре, чтобы
            # синхронизировать изменения в игре, тогда и в движке нужно доработать этот
            # функционал, сделаю если будет время.

            shadow_field = self.sapper.get_shadow_field()
            for btn in self.btns:
                i, j = map(int, btn.objectName().split())
                if shadow_field[j][i] == '   ':
                    btn.setEnabled(False)
                elif shadow_field[j][i] == '[*]':
                    btn.setIcon(QIcon('m.png'))
                    btn.setIconSize(QSize(14, 14))
                elif shadow_field[j][i] == '[B]':
                    btn.setIcon(QIcon('b.png'))
                    btn.setIconSize(QSize(14, 14))
                elif shadow_field[j][i] == '[F]':
                    btn.setIcon(QIcon('f.png'))
                    btn.setIconSize(QSize(14, 14))
                elif shadow_field[j][i] == '[ ]':
                    btn.setText('')
                    btn.setIcon(QIcon(None))
                elif shadow_field[j][i] != '[ ]':
                    btn.setText(shadow_field[j][i])

            minefield = self.sapper.get_minefield()
            if self.sapper.get_game() == -1 and self.is_show_dialog:
                for btn in self.btns:
                    i, j = map(int, btn.objectName().split())
                    if shadow_field[j][i] == '[F]' and minefield[j][i] == 0:
                        btn.setIcon(QIcon('e.png'))
                        btn.setIconSize(QSize(14, 14))

                self.mb_lose.show()
                self.is_show_dialog = False
            elif self.sapper.get_game() == 1 and self.is_show_dialog:
                self.mb_win.show()
                self.is_show_dialog = False

            self.LCD_count.display(self.sapper.get_mines())

        return QObject.event(obj, event)
示例#4
0
 def eventFilter(self, obj, event):
     # right mouse click event
     if event.type() == QEvent.MouseButtonPress:
         if event.button() == Qt.RightButton:
             row, column = obj.objectName().split(',')
             # check for flags
             if self.initialArray[int(row)][int(column)] == 19:
                 # flag present therefore remove flag
                 self.initialArray[int(row)][int(column)] = 9
             else:
                 # no flag present therefore add flag
                 self.initialArray[int(row)][int(column)] = 19
         self.update_display()
     return QObject.event(obj, event)
示例#5
0
    def eventFilter(self, obj, event):

        if event.type() == QEvent.MouseButtonPress:
            if event.button() == Qt.RightButton:
                row, column = obj.objectName().split(',')

                if self.initialArray[int(row)][int(column)] == 19:

                    self.initialArray[int(row)][int(column)] = 9
                else:

                    self.initialArray[int(row)][int(column)] = 19
            self.update_display()
        return QObject.event(obj, event)
示例#6
0
 def eventFilter(self, obj, event):
     if event.type() == QEvent.MouseButtonPress:
         if event.button() == Qt.RightButton:
             self.set_flag_icon(obj)
         elif event.button() == Qt.MiddleButton:
             if not obj.isEnabled():
                 i = self.buttonInstances.index(obj)
                 adj_cells = self.board.get_adjacent_cells(
                     i, self.board.make_split_board(self.buttonInstances))
                 flag_count = [
                     1 for button in adj_cells
                     if button.iconSize().height() == 19
                 ]
                 if sum(flag_count) == int(obj.text()):
                     self.open_chain_cells(self.buttonInstances.index(obj))
     return QObject.event(obj, event)
示例#7
0
    def eventFilter(self, obj, event):
        if event.type() == QEvent.KeyPress:
            for i, row in enumerate(self.textFields):
                for k, cell in enumerate(row):
                    if cell.hasFocus():
                        curRow = i
                        curCell = k
            if event.key() == Qt.Key_Up:
                if curRow >= 1: self.textFields[curRow-1][curCell].setFocus()
            elif event.key() == Qt.Key_Down:
                if curRow <= 7: self.textFields[curRow+1][curCell].setFocus()
            elif event.key() == Qt.Key_Left:
                if curCell >= 1: self.textFields[curRow][curCell-1].setFocus()
            elif event.key() == Qt.Key_Right:
                if curCell <= 7: self.textFields[curRow][curCell+1].setFocus()

        return QObject.event(obj, event)
示例#8
0
 def eventFilter(self, obj, event):
     if event.type() == QEvent.MouseButtonPress:
         if event.button() == Qt.LeftButton:
             if obj.isEnabled():
                 obj.setEnabled(False)
                 obj.setStyleSheet('background-color: #444444;')
             else:
                 obj.setEnabled(True)
                 obj.setStyleSheet('background-color: #4955ff;')
         elif obj.isEnabled():
             index = self.buttonInstances.index(obj)
             # index of buttosn in 2d array
             rowColInd = (index // self.cols, index % self.cols)
             imgs = ['../img/finish.png', '../img/start.png']
             if rowColInd != self.end and rowColInd != self.start:
                 if event.button() == Qt.RightButton:
                     self.setStartEndIcons(obj, self.end, imgs[0],
                                           rowColInd)
                     self.end = rowColInd
                 else:
                     self.setStartEndIcons(obj, self.start, imgs[1],
                                           rowColInd)
                     self.start = rowColInd
     return QObject.event(obj, event)
示例#9
0
 def eventFilter(self, obj, event):
     if event.type() == QEvent.MouseButtonPress:
         if event.button() == Qt.RightButton:
             self.set_flag(obj)
     return QObject.event(obj, event)
示例#10
0
 def eventFilter(self, obj, event):
     if event.type() == QEvent.MouseButtonPress:
         if event.button() == Qt.LeftButton and type(obj) == QLabel:
             self.messageInput.setText(f'@{obj.text()}, ' 
                                       + self.messageInput.text())
     return QObject.event(obj, event)