Fix number printing

master
En Yi 2018-07-13 15:08:55 +08:00
parent f57bfaa07c
commit 4cb2065518
1 changed files with 16 additions and 6 deletions

View File

@ -24,6 +24,7 @@ class BaseSudokuItem(QGraphicsObject):
self.default_pen = QPen() self.default_pen = QPen()
self.default_pen.setColor(Qt.white) self.default_pen.setColor(Qt.white)
self.default_pen.setWidth(1) self.default_pen.setWidth(1)
self.default_font = QFont("Helvetica", pointSize=14)
self.freeze = False self.freeze = False
@ -34,10 +35,14 @@ class NumberPainter(BaseSudokuItem):
def __init__(self, parent, grid): def __init__(self, parent, grid):
super().__init__(parent=parent) super().__init__(parent=parent)
self.sudoku_grid = grid self.sudoku_grid = grid
self.invalid_pen = QPen() self.invalid_pen = QPen()
self.invalid_pen.setColor(Qt.lightGray) self.invalid_pen.setColor(Qt.lightGray)
self.invalid_unit = 8 self.invalid_font = QFont("Helvetica", pointSize=12, italic=True)
self.invalid_pen.setWidth(self.invalid_unit)
self.fixed_pen = QPen()
self.fixed_pen.setColor(Qt.white)
self.fixed_font = QFont("Helvetica", pointSize=14, weight=QFont.Bold)
def paint(self, painter, style, widget=None): def paint(self, painter, style, widget=None):
for i in range(9): for i in range(9):
@ -52,14 +57,19 @@ class NumberPainter(BaseSudokuItem):
if val == 0: if val == 0:
val = '' val = ''
else: else:
if self.sudoku_grid.get_cell_status(h, w) == sdk.VALID: status = self.sudoku_grid.get_cell_status(h, w)
if status == sdk.VALID:
painter.setPen(self.default_pen) painter.setPen(self.default_pen)
painter.setFont(self.default_font)
elif status == sdk.FIXED:
painter.setPen(self.fixed_pen)
painter.setFont(self.fixed_font)
else: else:
painter.setPen(self.invalid_pen) painter.setPen(self.invalid_pen)
painter.setFont(self.invalid_font)
painter.drawText((w+0.5)*self.parent.cell_width-5, painter.drawText(QRectF(w*self.parent.cell_width, h*self.parent.cell_height,
(h+0.5)*self.parent.cell_height+5, self.parent.cell_width, self.parent.cell_height), Qt.AlignCenter, str(val))
str(val))
class SudokuGrid(BaseSudokuItem): class SudokuGrid(BaseSudokuItem):