[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: [PyQt] KeyPressEvent and Table
From: Christophe BAL <projetmbc () gmail ! com>
Date: 2013-03-16 9:03:41
Message-ID: CAAb4jGkQsKoS5KnNG7wvyMTprW4v_U8ATcQVwLMJC4E3D99Q4Q () mail ! gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Hello,
I would like to act before the change of the content of one cell in a
table. To do that I have made all the cells not editable, and I have tried
to use the *keyevent* method. This does not work : only the enter key is
recognized.
Indeed, I would to act if A is pressed, without changing the content of the
cell, and also to change the content only if one digit is pressed. What is
the good way to do that ? I've put one minimal not working code just after.
One precision : some celle cannot be changed (this is for a sudoku).
Best regards.
Christophe BAL
*==== THE CODE ====*
*
*
*#! /usr/bin/env python2.7*
*# -*- coding: utf-8 -*-*
*
*
*# Source :
http://www.developpez.net/forums/d1281788/autres-langages/python-zope/gui/pyside-pyqt/coquille-vide-sudoku/#post7181230
*
*
*
*from __future__ import division*
*
*
*import sys*
*from copy import deepcopy*
*
*
*from PySide import QtCore, QtGui*
*
*
*def cellColor(painter, option, color):*
* """*
* ???*
* """*
* r = option.rect*
* x, y, w, h = r.x() + 1, r.y() + 1, r.width()-2, r.height()-2*
*
*
* if isinstance(color, (str, unicode)):*
* color = QtGui.QColor(color)*
*
*
* elif isinstance(color, (list, tuple)):*
* if len(color) == 3:*
* r, g, b = color*
* alpha = 255*
*
*
* else:*
* r, g, b, alpha = color*
*
*
* color = QtGui.QColor(r, g, b, alpha)*
*
*
* painter.fillRect(x, y, w, h, color)*
*
*
*def cellBorder(painter, option, where):*
* """*
* ???*
* """*
* r = option.rect*
* x, y, w, h = r.x(), r.y(), r.width(), r.height()*
*
*
* if where == 'up':*
* x1, y1, x2, y2 = x, y, x + w, y*
*
*
* elif where == 'bottom':*
* x1, y1, x2, y2 = x + w, y + h, x, y + h*
*
*
* elif where == 'right':*
* x1, y1, x2, y2 = x + w, y, x + w, y + h*
*
*
* elif where == 'left':*
* x1, y1, x2, y2 = x, y + h, x, y*
*
*
* else:*
* return None*
*
*
* pen = QtGui.QPen()*
* pen.setWidth(4)*
* painter.setPen(pen)*
* painter.drawLine(x1, y1, x2, y2)*
*
*
*
*
*class SudokuDelegate(QtGui.QItemDelegate):*
* def __init__(self, parent=None):*
* super(SudokuDelegate, self).__init__(parent)*
*
*
* def initGrid(self, grid):*
* self.grid_0 = grid*
*
*
* def paint(self, painter, option, index):*
* """*
* ???*
* """*
* row, col = index.row(), index.column()*
*
*
* if row == 0 or row == 3 or row == 6:*
* if col in[0,3,6]:*
* cellBorder(painter, option, 'left')*
* cellBorder(painter, option, 'up')*
*
*
* elif col == 8:*
* cellBorder(painter, option, 'right')*
* cellBorder(painter, option, 'up')*
*
*
* else:*
* cellBorder(painter, option, 'up')*
*
*
* elif row in [1,2,4,5,7]:*
* if col in [0,3,6]:*
* cellBorder(painter, option, 'left')*
*
*
* elif col == 8:*
* cellBorder(painter, option, 'right')*
*
*
* elif row == 8:*
* if col in[0,3,6]:*
* cellBorder(painter, option, 'left')*
* cellBorder(painter, option, 'bottom')*
*
*
* elif col == 8:*
* cellBorder(painter, option, 'right')*
* cellBorder(painter, option, 'bottom')*
*
*
* else:*
* cellBorder(painter, option, 'bottom')*
*
*
*# Background color for initial known cells*
* if self.grid_0[row][col]!=0:*
* cellColor(painter, option, [200,200,200])*
*
*
* QtGui.QItemDelegate.paint(self, painter, option, index)*
*
*
*class MainWindow(QtGui.QWidget):*
* def __init__(*
* self,*
* parent = None*
* ):*
* super(MainWindow, self).__init__(parent)*
*
*
*# General grid*
* self.table = QtGui.QTableWidget(self)*
* self.nbrow, self.nbcol = 9, 9*
* self.table.setRowCount(self.nbrow)*
* self.table.setColumnCount(self.nbcol)*
*
*
*# Each cell has dimension 50 pixels x 50 pixels*
* for row in range(0, self.nbrow):*
* self.table.setRowHeight(row, 50)*
*
*
* for col in range(0, self.nbcol):*
* self.table.setColumnWidth(col, 50)*
*
*
*# Each cell contains one single QTableWidgetItem*
* for row in range(0, self.nbrow):*
* for col in range(0, self.nbcol):*
* item = QtGui.QTableWidgetItem()*
* item.setTextAlignment(*
* QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter*
* )*
*
*
* self.table.setItem(row, col, item)*
*
*
*# Header formatting*
* font = QtGui.QFont()*
* font.setFamily(u"DejaVu Sans")*
* font.setPointSize(12)*
* self.table.horizontalHeader().setFont(font)*
* self.table.verticalHeader().setFont(font)*
*
*
*# Font used*
* font = QtGui.QFont()*
* font.setFamily(u"DejaVu Sans")*
* font.setPointSize(20)*
* self.table.setFont(font)*
*
*
*# Global Size*
* self.resize(60*9, 60*9 + 20)*
*
*
*# Layout of the table*
* layout = QtGui.QGridLayout()*
* layout.addWidget(self.table, 0, 0)*
* self.setLayout(layout)*
*
*
*# Initial grid (to test)*
* self.grid_0 = [*
* [0,0,0, 0,2,0, 9,0,1],*
* [0,0,0, 0,0,0, 0,0,3],*
* [0,8,0, 3,0,0, 4,5,0],*
*#*
* [0,4,7, 0,0,5, 0,8,0],*
* [0,0,0, 0,0,0, 0,0,0],*
* [0,2,0, 9,0,0, 7,4,0],*
*#*
* [0,9,5, 0,0,2, 0,3,0],*
* [6,0,0, 0,0,8, 0,0,0],*
* [7,0,4, 0,6,0, 0,0,0]*
* ]*
*
*
*# Use of the delegate so to use thicker lines.*
* self.delegate = SudokuDelegate(self.table)*
* self.table.setItemDelegate(self.delegate)*
* self.delegate.initGrid(self.grid_0)*
*
*
*# Initialization of the actual grid*
* self.grid = deepcopy(self.grid_0)*
*
*
*# Display the grid.*
* self.update(self.grid)*
*
*
*# Set the focus in the first cell*
* self.table.setFocus()*
* self.table.setCurrentCell(0, 0)*
*
*
* def update(self, g):*
* for row in range(0, len(g[0])):*
* for col in range(0, len(g)):*
* if g[row][col] == 0:*
* font = QtGui.QFont()*
* font.setFamily(u"DejaVu Sans")*
* font.setPointSize(12)*
* self.table.item(row, col).setFont(font)*
*
*
* color = QtGui.QColor(0, 0, 255, 255) # bleu*
* self.table.item(row, col).setForeground(color)*
*
*
* self.table.item(row, col).setText(*
* u"1 2 3\n4 5 6\n7 8 9"*
* )*
* self.table.item(*
* row, col*
* ).setFlags(*
* QtCore.Qt.ItemIsEnabled*
* | QtCore.Qt.ItemIsSelectable*
*# | QtCore.Qt.ItemIsEditable*
* )*
*
*
* else:*
* self.table.item(row, col).setText(unicode(g[row][col]))
*
* self.table.item(*
* row, col*
* ).setFlags(*
* QtCore.Qt.ItemIsEnabled*
* | QtCore.Qt.ItemIsSelectable*
* )*
*
*
*# Just for testing !*
* color = QtGui.QColor(160, 255, 160, 255) # Light green*
* self.table.item(2, 4).setBackground(color)*
*
*
* color = QtGui.QColor(255, 160, 160, 255) # Light red*
* self.table.item(6, 3).setBackground(color)*
*
*
* def keyPressEvent(self, event):*
* if type(event) == QtGui.QKeyEvent:*
* #here accept the event and do something*
* print event.key()*
* event.accept()*
* else:*
* event.ignore()*
*
*
*# print self.table.currentColumn(), self.table.currentRow()*
*
*
*
*
*if __name__ == "__main__":*
* app = QtGui.QApplication(sys.argv)*
* fen = MainWindow()*
* fen.show()*
* sys.exit(app.exec_())*
[Attachment #5 (text/html)]
Hello,<div>I would like to act before the change of the content of one cell in a \
table. To do that I have made all the cells not editable, and I have tried to use the \
<b><font face="courier new, monospace">keyevent</font></b> method. This does not work \
: only the enter key is recognized. </div> <div><br></div><div>Indeed, I would to act \
if A is pressed, without changing the content of the cell, and also to change the \
content only if one digit is pressed. What is the good way to do that ? I've put \
one minimal not working code just after. </div> <div><br></div><div>One precision : \
some celle cannot be changed (this is for a sudoku).</div><div><br></div><div>Best \
regards.</div><div>Christophe \
BAL<br><div><br></div><div><br></div><div><br></div><div><font face="courier new, \
monospace"><b>==== THE CODE ====</b></font></div> <div><font face="courier new, \
monospace"><b><br></b></font></div><div><div><font face="courier new, \
monospace"><b>#! /usr/bin/env python2.7</b></font></div><div><font face="courier new, \
monospace"><b># -*- coding: utf-8 -*-</b></font></div> <div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b># \
Source : <a href="http://www.developpez.net/forums/d1281788/autres-langages/python-zop \
e/gui/pyside-pyqt/coquille-vide-sudoku/#post7181230">http://www.developpez.net/forums/ \
d1281788/autres-langages/python-zope/gui/pyside-pyqt/coquille-vide-sudoku/#post7181230</a></b></font></div>
<div><font face="courier new, monospace"><b><br></b></font></div><div><font \
face="courier new, monospace"><b>from __future__ import \
division</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div> <div><font face="courier new, \
monospace"><b>import sys</b></font></div><div><font face="courier new, \
monospace"><b>from copy import deepcopy</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div> <div><font face="courier new, monospace"><b>from \
PySide import QtCore, QtGui</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b>def \
cellColor(painter, option, color):</b></font></div> <div><font face="courier new, \
monospace"><b> """</b></font></div><div><font face="courier new, \
monospace"><b> ???</b></font></div><div><font face="courier new, monospace"><b> \
"""</b></font></div> <div><font face="courier new, monospace"><b> r \
= option.rect</b></font></div><div><font face="courier new, monospace"><b> x, y, \
w, h = r.x() + 1, r.y() + 1, r.width()-2, r.height()-2</b></font></div><div><font \
face="courier new, monospace"><b><br> </b></font></div><div><font face="courier new, \
monospace"><b> if isinstance(color, (str, unicode)):</b></font></div><div><font \
face="courier new, monospace"><b> color = \
QtGui.QColor(color)</b></font></div><div><font face="courier new, monospace"><b><br> \
</b></font></div><div><font face="courier new, monospace"><b> elif \
isinstance(color, (list, tuple)):</b></font></div><div><font face="courier new, \
monospace"><b> if len(color) == 3:</b></font></div><div><font face="courier \
new, monospace"><b> r, g, b = color</b></font></div> <div><font \
face="courier new, monospace"><b> alpha = 255</b></font></div><div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b> else:</b></font></div> <div><font face="courier new, \
monospace"><b> r, g, b, alpha = color</b></font></div><div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b> color = QtGui.QColor(r, g, b, alpha)</b></font></div> \
<div><font face="courier new, monospace"><b><br></b></font></div><div><font \
face="courier new, monospace"><b> painter.fillRect(x, y, w, h, \
color)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div> <div><font face="courier new, monospace"><b>def \
cellBorder(painter, option, where):</b></font></div><div><font face="courier new, \
monospace"><b> """</b></font></div><div><font face="courier new, \
monospace"><b> ???</b></font></div> <div><font face="courier new, monospace"><b> \
"""</b></font></div><div><font face="courier new, monospace"><b> r \
= option.rect</b></font></div><div><font face="courier new, monospace"><b> x, y, \
w, h = r.x(), r.y(), r.width(), r.height()</b></font></div> <div><font face="courier \
new, monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
if where == 'up':</b></font></div><div><font face="courier new, \
monospace"><b> x1, y1, x2, y2 = x, y, x + w, y</b></font></div> <div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b> elif where == 'bottom':</b></font></div><div><font \
face="courier new, monospace"><b> x1, y1, x2, y2 = x + w, y + h, x, y + \
h</b></font></div> <div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
elif where == 'right':</b></font></div><div><font face="courier new, \
monospace"><b> x1, y1, x2, y2 = x + w, y, x + w, y + h</b></font></div> \
<div><font face="courier new, monospace"><b><br></b></font></div><div><font \
face="courier new, monospace"><b> elif where == \
'left':</b></font></div><div><font face="courier new, monospace"><b> \
x1, y1, x2, y2 = x, y + h, x, y</b></font></div> <div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
else:</b></font></div><div><font face="courier new, monospace"><b> return \
None</b></font></div><div><font face="courier new, monospace"><b><br> \
</b></font></div><div><font face="courier new, monospace"><b> pen = \
QtGui.QPen()</b></font></div><div><font face="courier new, monospace"><b> \
pen.setWidth(4)</b></font></div><div><font face="courier new, monospace"><b> \
painter.setPen(pen)</b></font></div> <div><font face="courier new, monospace"><b> \
painter.drawLine(x1, y1, x2, y2)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div> <div><font face="courier new, monospace"><b>class \
SudokuDelegate(QtGui.QItemDelegate):</b></font></div><div><font face="courier new, \
monospace"><b> def __init__(self, parent=None):</b></font></div><div><font \
face="courier new, monospace"><b> super(SudokuDelegate, \
self).__init__(parent)</b></font></div> <div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
def initGrid(self, grid):</b></font></div><div><font face="courier new, \
monospace"><b> self.grid_0 = grid</b></font></div> <div><font face="courier \
new, monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
def paint(self, painter, option, index):</b></font></div><div><font face="courier \
new, monospace"><b> """</b></font></div> <div><font \
face="courier new, monospace"><b> ???</b></font></div><div><font face="courier \
new, monospace"><b> """</b></font></div><div><font \
face="courier new, monospace"><b> row, col = index.row(), \
index.column()</b></font></div> <div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
if row == 0 or row == 3 or row == 6:</b></font></div><div><font face="courier new, \
monospace"><b> if col in[0,3,6]:</b></font></div> <div><font face="courier \
new, monospace"><b> cellBorder(painter, option, \
'left')</b></font></div><div><font face="courier new, monospace"><b> \
cellBorder(painter, option, 'up')</b></font></div> <div><font face="courier \
new, monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
elif col == 8:</b></font></div><div><font face="courier new, monospace"><b> \
cellBorder(painter, option, 'right')</b></font></div> <div><font \
face="courier new, monospace"><b> cellBorder(painter, option, \
'up')</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
else:</b></font></div> <div><font face="courier new, monospace"><b> \
cellBorder(painter, option, 'up')</b></font></div><div><font face="courier \
new, monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
elif row in [1,2,4,5,7]:</b></font></div> <div><font face="courier new, \
monospace"><b> if col in [0,3,6]:</b></font></div><div><font face="courier \
new, monospace"><b> cellBorder(painter, option, \
'left')</b></font></div><div><font face="courier new, monospace"><b><br> \
</b></font></div><div><font face="courier new, monospace"><b> elif col == \
8:</b></font></div><div><font face="courier new, monospace"><b> \
cellBorder(painter, option, 'right')</b></font></div> <div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b> elif row == 8:</b></font></div><div><font face="courier new, \
monospace"><b> if col in[0,3,6]:</b></font></div> <div><font face="courier \
new, monospace"><b> cellBorder(painter, option, \
'left')</b></font></div><div><font face="courier new, monospace"><b> \
cellBorder(painter, option, 'bottom')</b></font></div> <div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b> elif col == 8:</b></font></div><div><font face="courier \
new, monospace"><b> cellBorder(painter, option, \
'right')</b></font></div> <div><font face="courier new, monospace"><b> \
cellBorder(painter, option, 'bottom')</b></font></div><div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b> else:</b></font></div> <div><font face="courier new, \
monospace"><b> cellBorder(painter, option, \
'bottom')</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b># \
Background color for initial known cells</b></font></div> <div><font face="courier \
new, monospace"><b> if self.grid_0[row][col]!=0:</b></font></div><div><font \
face="courier new, monospace"><b> cellColor(painter, option, \
[200,200,200])</b></font></div><div><font face="courier new, monospace"><b><br> \
</b></font></div><div><font face="courier new, monospace"><b> \
QtGui.QItemDelegate.paint(self, painter, option, index)</b></font></div><div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b>class MainWindow(QtGui.QWidget):</b></font></div> <div><font \
face="courier new, monospace"><b> def __init__(</b></font></div><div><font \
face="courier new, monospace"><b> self,</b></font></div><div><font \
face="courier new, monospace"><b> parent = None</b></font></div> <div><font \
face="courier new, monospace"><b> ):</b></font></div><div><font face="courier new, \
monospace"><b> super(MainWindow, \
self).__init__(parent)</b></font></div><div><font face="courier new, \
monospace"><b><br> </b></font></div><div><font face="courier new, monospace"><b># \
General grid</b></font></div><div><font face="courier new, monospace"><b> \
self.table = QtGui.QTableWidget(self)</b></font></div><div><font face="courier new, \
monospace"><b> self.nbrow, self.nbcol = 9, 9</b></font></div> <div><font \
face="courier new, monospace"><b> \
self.table.setRowCount(self.nbrow)</b></font></div><div><font face="courier new, \
monospace"><b> \
self.table.setColumnCount(self.nbcol)</b></font></div><div><font face="courier new, \
monospace"><b><br> </b></font></div><div><font face="courier new, monospace"><b># \
Each cell has dimension 50 pixels x 50 pixels</b></font></div><div><font \
face="courier new, monospace"><b> for row in range(0, \
self.nbrow):</b></font></div> <div><font face="courier new, monospace"><b> \
self.table.setRowHeight(row, 50)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
for col in range(0, self.nbcol):</b></font></div> <div><font face="courier new, \
monospace"><b> self.table.setColumnWidth(col, \
50)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b># Each \
cell contains one single QTableWidgetItem</b></font></div> <div><font face="courier \
new, monospace"><b> for row in range(0, \
self.nbrow):</b></font></div><div><font face="courier new, monospace"><b> \
for col in range(0, self.nbcol):</b></font></div><div><font face="courier new, \
monospace"><b> item = QtGui.QTableWidgetItem()</b></font></div> \
<div><font face="courier new, monospace"><b> \
item.setTextAlignment(</b></font></div><div><font face="courier new, monospace"><b> \
QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter</b></font></div> <div><font \
face="courier new, monospace"><b> )</b></font></div><div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b> self.table.setItem(row, col, item)</b></font></div> \
<div><font face="courier new, monospace"><b><br></b></font></div><div><font \
face="courier new, monospace"><b># Header formatting</b></font></div><div><font \
face="courier new, monospace"><b> font = QtGui.QFont()</b></font></div> \
<div><font face="courier new, monospace"><b> font.setFamily(u"DejaVu \
Sans")</b></font></div><div><font face="courier new, monospace"><b> \
font.setPointSize(12)</b></font></div><div><font face="courier new, monospace"><b> \
self.table.horizontalHeader().setFont(font)</b></font></div> <div><font face="courier \
new, monospace"><b> \
self.table.verticalHeader().setFont(font)</b></font></div><div><font face="courier \
new, monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b># \
Font used</b></font></div> <div><font face="courier new, monospace"><b> font = \
QtGui.QFont()</b></font></div><div><font face="courier new, monospace"><b> \
font.setFamily(u"DejaVu Sans")</b></font></div><div><font face="courier \
new, monospace"><b> font.setPointSize(20)</b></font></div> <div><font \
face="courier new, monospace"><b> \
self.table.setFont(font)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b># \
Global Size</b></font></div> <div><font face="courier new, monospace"><b> \
self.resize(60*9, 60*9 + 20)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b># \
Layout of the table</b></font></div> <div><font face="courier new, monospace"><b> \
layout = QtGui.QGridLayout()</b></font></div><div><font face="courier new, \
monospace"><b> layout.addWidget(self.table, 0, 0)</b></font></div><div><font \
face="courier new, monospace"><b> self.setLayout(layout)</b></font></div> \
<div><font face="courier new, monospace"><b><br></b></font></div><div><font \
face="courier new, monospace"><b># Initial grid (to test)</b></font></div><div><font \
<div><font face="courier new, monospace"><b>#</b></font></div><div><font \
face="courier new, monospace"><b> [0,4,7, 0,0,5, \
0,8,0],</b></font></div><div><font face="courier new, monospace"><b> \
[0,0,0, 0,0,0, 0,0,0],</b></font></div> <div><font face="courier new, monospace"><b> \
[0,2,0, 9,0,0, 7,4,0],</b></font></div><div><font face="courier new, \
monospace"><b>#</b></font></div><div><font face="courier new, monospace"><b> \
[0,9,5, 0,0,2, 0,3,0],</b></font></div> <div><font face="courier new, monospace"><b> \
[6,0,0, 0,0,8, 0,0,0],</b></font></div><div><font face="courier new, monospace"><b> \
[7,0,4, 0,6,0, 0,0,0]</b></font></div><div><font face="courier new, monospace"><b> \
]</b></font></div> <div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b># Use \
of the delegate so to use thicker lines.</b></font></div><div><font face="courier \
new, monospace"><b> self.delegate = \
SudokuDelegate(self.table)</b></font></div> <div><font face="courier new, \
monospace"><b> \
self.table.setItemDelegate(self.delegate)</b></font></div><div><font face="courier \
new, monospace"><b> \
self.delegate.initGrid(self.grid_0)</b></font></div><div><font face="courier new, \
monospace"><b><br> </b></font></div><div><font face="courier new, monospace"><b># \
Initialization of the actual grid</b></font></div><div><font face="courier new, \
monospace"><b> self.grid = deepcopy(self.grid_0)</b></font></div><div><font \
face="courier new, monospace"><b><br> </b></font></div><div><font face="courier new, \
monospace"><b># Display the grid.</b></font></div><div><font face="courier new, \
monospace"><b> self.update(self.grid)</b></font></div><div><font face="courier \
new, monospace"><b><br> </b></font></div><div><font face="courier new, \
monospace"><b># Set the focus in the first cell</b></font></div><div><font \
face="courier new, monospace"><b> \
self.table.setFocus()</b></font></div><div><font face="courier new, monospace"><b> \
self.table.setCurrentCell(0, 0)</b></font></div> <div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
def update(self, g):</b></font></div><div><font face="courier new, monospace"><b> \
for row in range(0, len(g[0])):</b></font></div> <div><font face="courier new, \
monospace"><b> for col in range(0, len(g)):</b></font></div><div><font \
face="courier new, monospace"><b> if g[row][col] == \
0:</b></font></div><div><font face="courier new, monospace"><b> \
font = QtGui.QFont()</b></font></div> <div><font face="courier new, monospace"><b> \
font.setFamily(u"DejaVu Sans")</b></font></div><div><font face="courier \
new, monospace"><b> font.setPointSize(12)</b></font></div> \
<div><font face="courier new, monospace"><b> self.table.item(row, \
col).setFont(font)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
color = QtGui.QColor(0, 0, 255, 255) # bleu</b></font></div> <div><font \
face="courier new, monospace"><b> self.table.item(row, \
col).setForeground(color)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
self.table.item(row, col).setText(</b></font></div> <div><font face="courier new, \
monospace"><b> u"1 2 3\n4 5 6\n7 8 \
9"</b></font></div><div><font face="courier new, monospace"><b> \
)</b></font></div><div><font face="courier new, monospace"><b> \
self.table.item(</b></font></div> <div><font face="courier new, monospace"><b> \
row, col</b></font></div><div><font face="courier new, monospace"><b> \
).setFlags(</b></font></div><div><font face="courier new, monospace"><b> \
QtCore.Qt.ItemIsEnabled</b></font></div> <div><font face="courier new, monospace"><b> \
| QtCore.Qt.ItemIsSelectable</b></font></div><div><font face="courier new, \
monospace"><b># | QtCore.Qt.ItemIsEditable</b></font></div> \
<div><font face="courier new, monospace"><b> \
)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
else:</b></font></div> <div><font face="courier new, monospace"><b> \
self.table.item(row, col).setText(unicode(g[row][col]))</b></font></div><div><font \
face="courier new, monospace"><b> \
self.table.item(</b></font></div> <div><font face="courier new, monospace"><b> \
row, col</b></font></div><div><font face="courier new, monospace"><b> \
).setFlags(</b></font></div><div><font face="courier new, monospace"><b> \
QtCore.Qt.ItemIsEnabled</b></font></div> <div><font face="courier new, monospace"><b> \
| QtCore.Qt.ItemIsSelectable</b></font></div><div><font face="courier new, \
monospace"><b> )</b></font></div><div><font face="courier new, \
monospace"><b><br> </b></font></div><div><font face="courier new, monospace"><b># \
Just for testing !</b></font></div><div><font face="courier new, monospace"><b> \
color = QtGui.QColor(160, 255, 160, 255) # Light green</b></font></div> <div><font \
face="courier new, monospace"><b> self.table.item(2, \
4).setBackground(color)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
color = QtGui.QColor(255, 160, 160, 255) # Light red</b></font></div> <div><font \
face="courier new, monospace"><b> self.table.item(6, \
3).setBackground(color)</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b> \
def keyPressEvent(self, event):</b></font></div> <div><font face="courier new, \
monospace"><b> if type(event) == QtGui.QKeyEvent:</b></font></div><div><font \
face="courier new, monospace"><b> #here accept the event and do \
something</b></font></div><div> <font face="courier new, monospace"><b> \
print event.key()</b></font></div><div><font face="courier new, monospace"><b> \
event.accept()</b></font></div><div><font face="courier new, monospace"><b> \
else:</b></font></div> <div><font face="courier new, monospace"><b> \
event.ignore()</b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b># \
print self.table.currentColumn(), self.table.currentRow()</b></font></div> <div><font \
face="courier new, monospace"><b><br></b></font></div><div><font face="courier new, \
monospace"><b><br></b></font></div><div><font face="courier new, monospace"><b>if \
__name__ == "__main__":</b></font></div> <div><font face="courier new, \
monospace"><b> app = QtGui.QApplication(sys.argv)</b></font></div><div><font \
face="courier new, monospace"><b> fen = MainWindow()</b></font></div><div><font \
face="courier new, monospace"><b> fen.show()</b></font></div> <div><font \
face="courier new, monospace"><b> \
sys.exit(app.exec_())</b></font></div></div><div><br></div></div>
_______________________________________________
PyQt mailing list PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic