Add difficulty select at startup

master
En Yi 2018-07-13 14:23:58 +08:00
parent 46127ed77f
commit e82d26c7bc
2 changed files with 22 additions and 18 deletions

View File

@ -52,7 +52,7 @@ class DifficultyDisplayer(QGraphicsWidget):
self.width = 100 self.width = 100
self.height = 50 self.height = 50
self.diff_menu = DifficultyMenu(self) self.diff_menu = DifficultyMenu(self.width, self.height, self)
self.diff_menu.setY(-self.diff_menu.height) self.diff_menu.setY(-self.diff_menu.height)
self.diff_menu.setVisible(False) self.diff_menu.setVisible(False)
@ -93,7 +93,7 @@ class DifficultyDisplayer(QGraphicsWidget):
self.notFocus.emit() self.notFocus.emit()
def connect_buttons_signal(self, func): def connect_buttons_signal(self, func):
self.diff_menu.connect_buttons_signal(func) self.diff_menu.menuClicked.connect(func)
print('Diff buttons connected') print('Diff buttons connected')
def selected_difficulty(self): def selected_difficulty(self):
@ -107,27 +107,28 @@ class DifficultyDisplayer(QGraphicsWidget):
class DifficultyMenu(QGraphicsWidget): class DifficultyMenu(QGraphicsWidget):
menuClicked = pyqtSignal() menuClicked = pyqtSignal(str)
def __init__(self, parent): def __init__(self, width, height, parent=None):
super().__init__(parent=parent) super().__init__(parent=parent)
self.diff_buttons = [] self.diff_buttons = []
self.difficulty = ['Very Easy', 'Easy', 'Normal', 'Hard', 'Insane'] self.difficulty = ['Very Easy', 'Easy', 'Normal', 'Hard', 'Insane']
self.btn_height = 50 self.btn_height = height
self.btn_width = 100 self.btn_width = width
self.height = (self.btn_height + 10) * 5 self.height = (self.btn_height + 10) * 5
self.width = self.btn_width self.width = self.btn_width
for i in range(5): for i in range(5):
btn = buttons.animBox(0, (self.btn_height + 10) * i, btn = buttons.animBox(0, (self.btn_height + 10) * i,
self.btn_width, self.btn_height, self.difficulty[i], parent=self) self.btn_width, self.btn_height, self.difficulty[i], parent=self)
btn.buttonClicked.connect(self.clicked_on)
self.diff_buttons.append(btn) self.diff_buttons.append(btn)
def connect_buttons_signal(self, func): #def connect_buttons_signal(self, func):
for btn in self.diff_buttons: # for btn in self.diff_buttons:
btn.buttonClicked.connect(func) #btn.buttonClicked.connect(func)
btn.buttonClicked.connect(self.clicked_on) # btn.buttonClicked.connect(self.clicked_on)
def clicked_on(self): def clicked_on(self, string):
self.menuClicked.emit() self.menuClicked.emit(string)

View File

@ -10,6 +10,7 @@ from PyQt5.QtCore import (QAbstractAnimation, QPointF, Qt, QRectF, QLineF,
from gameplay import sudoku_gameplay as sdk from gameplay import sudoku_gameplay as sdk
from general.extras import bound_value from general.extras import bound_value
from . import buttons from . import buttons
from . import menu_graphics as menu_grap
import numpy as np import numpy as np
@ -264,15 +265,17 @@ class PlayMenu(BaseSudokuItem):
self.rect = self.parent.boundingRect() self.rect = self.parent.boundingRect()
self.diff_select = menu_grap.DifficultyMenu(self.rect.width()/2, self.rect.height()/8, self)
self.diff_select.setX(self.rect.width()/4)
self.diff_select.setY((self.rect.height() - self.diff_select.height)/2)
self.diff_select.menuClicked.connect(self.difficulty_selected)
def paint(self, painter, style, widget=None): def paint(self, painter, style, widget=None):
painter.setPen(self.default_pen) pass
painter.drawRect(self.rect.width()/2, self.rect.height()/2,
100, 100)
def boundingRect(self): def boundingRect(self):
return QRectF(self.rect.width()/2, self.rect.height()/2, return self.diff_select.boundingRect()
100, 100)
def mousePressEvent(self, ev): def difficulty_selected(self):
self.setVisible(False) self.setVisible(False)
self.buttonClicked.emit() self.buttonClicked.emit()