Change to use FocusEvents
parent
bed8f5a303
commit
4e49c9f032
|
@ -67,14 +67,18 @@ class GameBoard(BoxBoard):
|
|||
self.gamegrid.buttonClicked.connect(self.show_number_ring)
|
||||
self.numring.connect_button_signals(self.select_ring_number)
|
||||
|
||||
self.gamegrid.setFocus(Qt.MouseFocusReason)
|
||||
|
||||
def show_number_ring(self, x=0, y=0):
|
||||
print('Before', self.gamegrid.hasFocus(), self.numring.hasFocus())
|
||||
if not self.gamegrid.freeze:
|
||||
self.numring.setPos(x, y)
|
||||
self.numring.setVisible(True)
|
||||
self.gamegrid.freeze = True
|
||||
self.numring.setFocus()
|
||||
else:
|
||||
self.numring.setVisible(False)
|
||||
self.gamegrid.freeze = False
|
||||
self.gamegrid.setFocus()
|
||||
print('After', self.gamegrid.hasFocus(), self.numring.hasFocus())
|
||||
|
||||
def select_ring_number(self, val):
|
||||
if val == 'X':
|
||||
|
|
|
@ -21,7 +21,6 @@ class BaseSudokuItem(QGraphicsObject):
|
|||
|
||||
self.freeze = False
|
||||
|
||||
|
||||
class NumberPainter(BaseSudokuItem):
|
||||
# TODO: Use different font to differentiate the status of a cell
|
||||
|
||||
|
@ -100,8 +99,7 @@ class SudokuGrid(BaseSudokuItem):
|
|||
|
||||
self.setAcceptHoverEvents(True)
|
||||
self.setAcceptedMouseButtons(Qt.LeftButton)
|
||||
|
||||
self.freeze = False
|
||||
self.setFlag(QGraphicsItem.ItemIsFocusable, True)
|
||||
|
||||
def replace_cell_number(self, val):
|
||||
self.sudoku_grid.replace_cell_number(self.mouse_h, self.mouse_w, val)
|
||||
|
@ -145,6 +143,12 @@ class SudokuGrid(BaseSudokuItem):
|
|||
else:
|
||||
self.buttonClicked.emit(0, 0)
|
||||
|
||||
def focusOutEvent(self, event):
|
||||
self.freeze = True
|
||||
|
||||
#def focusInEvent(self, event):
|
||||
# self.freeze = False
|
||||
|
||||
|
||||
class NumberRing(BaseSudokuItem):
|
||||
# TODO: Add functions to animated the ring appearing
|
||||
|
@ -172,6 +176,8 @@ class NumberRing(BaseSudokuItem):
|
|||
|
||||
self.cell_buttons.append(btn)
|
||||
|
||||
self.setFlag(QGraphicsItem.ItemIsFocusable, True)
|
||||
|
||||
def boundingRect(self):
|
||||
return QRectF(-5, -5, self.cell_width+self.radius*2+10,
|
||||
self.cell_height + self.radius * 2 + 10)
|
||||
|
@ -187,3 +193,6 @@ class NumberRing(BaseSudokuItem):
|
|||
def freeze_buttons(self, state):
|
||||
for btn in self.cell_buttons:
|
||||
btn.freeze = state
|
||||
|
||||
def focusOutEvent(self, event):
|
||||
self.setVisible(False)
|
||||
|
|
2
main.py
2
main.py
|
@ -43,7 +43,7 @@ class SudokuWindow(QGraphicsView):
|
|||
self.fitInView(self.form.boundingRect(), Qt.KeepAspectRatio)
|
||||
self.show()
|
||||
|
||||
self.menuboard.diff_display.diffClicked.connect(self.freeze_game)
|
||||
#self.menuboard.diff_display.diffClicked.connect(self.freeze_game)
|
||||
|
||||
def freeze_game(self, freeze):
|
||||
self.menuboard.show_difficulty(freeze)
|
||||
|
|
Loading…
Reference in New Issue