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)
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)
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)
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)
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)
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)
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)
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)
def eventFilter(self, obj, event): if event.type() == QEvent.MouseButtonPress: if event.button() == Qt.RightButton: self.set_flag(obj) return QObject.event(obj, event)
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)