Focus-moving on board works
This commit is contained in:
parent
4376d4e6e3
commit
1bae9069a0
29
game.py
29
game.py
|
@ -42,6 +42,7 @@ class SeopardyGame(QtGui.QWidget):
|
|||
b.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
|
||||
b.setAutoDefault(False)
|
||||
b.setStyleSheet("QPushButton { font-size: 60px; }")
|
||||
b.installEventFilter(FocusKeyGrabber(i+1, j+1, self))
|
||||
b.clicked.connect(lambda sec=sec, j=j: self.go_to_question(sec, j+1))
|
||||
board.addWidget(b, j+1, i)
|
||||
layout.addLayout(board)
|
||||
|
@ -57,6 +58,11 @@ class SeopardyGame(QtGui.QWidget):
|
|||
|
||||
self.setLayout(layout)
|
||||
|
||||
def setFocusToQuestion(self, secno, number):
|
||||
if secno < 1 or secno > len(self.questions.get_sections()) or number > 5 or number < 1:
|
||||
return
|
||||
|
||||
self.board.itemAtPosition(number, secno-1).widget().setFocus()
|
||||
|
||||
def event(self, e):
|
||||
if e.type() == QtCore.QEvent.KeyPress and e.key() == QtCore.Qt.Key_Left:
|
||||
|
@ -169,3 +175,26 @@ class SeopardyGame(QtGui.QWidget):
|
|||
|
||||
btn.setStyleSheet("QPushButton { background-color: %s; color: white; font-size: 20px; border: none; }" % (btncolor.name(),))
|
||||
btn.setText(btnstr.strip())
|
||||
|
||||
class FocusKeyGrabber(QtCore.QObject):
|
||||
def __init__(self, secno, number, parent, *args, **kwargs):
|
||||
super(FocusKeyGrabber, self).__init__(parent, *args, **kwargs)
|
||||
self._secno = secno
|
||||
self._number = number
|
||||
self._parent = parent
|
||||
|
||||
def eventFilter(self, obj, e):
|
||||
if e.type() == QtCore.QEvent.KeyPress:
|
||||
if e.key() == QtCore.Qt.Key.Key_Left:
|
||||
self._parent.setFocusToQuestion(self._secno-1, self._number)
|
||||
return True
|
||||
elif e.key() == QtCore.Qt.Key.Key_Right:
|
||||
self._parent.setFocusToQuestion(self._secno+1, self._number)
|
||||
return True
|
||||
elif e.key() == QtCore.Qt.Key.Key_Up:
|
||||
self._parent.setFocusToQuestion(self._secno, self._number-1)
|
||||
return True
|
||||
elif e.key() == QtCore.Qt.Key.Key_Down:
|
||||
self._parent.setFocusToQuestion(self._secno, self._number+1)
|
||||
return True
|
||||
return QtCore.QObject.eventFilter(self, obj, e)
|
||||
|
|
Loading…
Reference in New Issue