[PyQt] Pyqt, repainting on a customize widget.
Entity Reborn
entityreborn at gmail.com
Sat Mar 26 18:44:46 GMT 2011
You need to import QtCore. Also, it's QApplication, not Qapplication.
On Mar 26, 2011, at 11:41 AM, jp984 <jp984 at costarricense.cr> wrote:
>
> this is what i get when i try:
> QtCore.Qapplication.ProcessEvents()
> global name 'QtCore' is not defined
>
>
> jp984 wrote:
>>
>> 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.-tp31140528p31246967.html
> Sent from the PyQt mailing list archive at Nabble.com.
>
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
More information about the PyQt
mailing list