[PyQt] Pyqt, repainting on a customize widget.
jp984
jp984 at costarricense.cr
Mon Mar 14 02:42:42 GMT 2011
Hello there.
Im learning pyqt using "rapid gui programing with pyqt" book, Im making a
change on the chapter's 11 exercise solution given by the book. I want the
widget to change the focus on each rectangle automatically every half of a
second. So i replace the mouse and key event handlers for a method to do the
work.
It looks .update() method doest work properly,the widget shows the widget at
the initial state and then it isn't updated can any of you guys give me a
hint:
The move method does change the focus on each rectangle (x,y)the grid.
this is the code:
class CountersWidget(QWidget):
def __init__(self, parent=None):
super(CountersWidget, self).__init__(parent)
self.setSizePolicy(QSizePolicy(QSizePolicy.Expanding,
QSizePolicy.Expanding))
self.grid = [[BLANK] * 3 for i in range(3)]
self.selected = [0, 0]
self.setMinimumSize(self.minimumSizeHint())
def sizeHint(self):
return QSize(200, 200)
def minimumSizeHint(self):
return QSize(100, 100)
def move(self):
if self.selected[0] == 2:
self.selected=([0,self.selected[1]+1] if not
self.selected[1]==2
else [0,0])
else:
self.selected = [self.selected[0]+1, self.selected[1]]
x, y = self.selected
cell= self.grid[x][y]
print (self.selected)
self.grid[x][y]=cell
self.update()
self.emit(SIGNAL("movido"))
def delay(self):
time.sleep(0.5)
self.emit(SIGNAL("delay"))
def paintEvent(self, event=None):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing, True)
xOffset = self.width() / 3
yOffset = self.height() / 3
for x in range(3):
for y in range(3):
cell = self.grid[x][y]
rect = (QRectF(x * xOffset, y * yOffset,
xOffset, yOffset).adjusted(0.5, 0.5, -0.5, -0.5))
color = None
if [x, y] == self.selected:
painter.setPen(QPen(Qt.blue, 3))
else:
painter.setPen(Qt.black)
painter.drawRect(rect)
QTimer.singleShot(0,self.delay)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
form = CountersWidget()
form.setWindowTitle("Counters")
form.show()
app.exec_()
--
View this message in context: http://old.nabble.com/Pyqt%2C-repainting-on-a-customize-widget.-tp31140528p31140528.html
Sent from the PyQt mailing list archive at Nabble.com.
More information about the PyQt
mailing list