PyQt: pintar dintre d'un widget
La revisió el 17:37, 16 gen 2013 per Enric (discussió | contribucions) (Es crea la pàgina amb «Anem a pintar els nostres propis widgets en Qt. Per fer això es fa de la següent manera: * Creem la nostra '''classe derivant-la de QWidget''' (en el nostre exemple la …».)
Anem a pintar els nostres propis widgets en Qt. Per fer això es fa de la següent manera:
- Creem la nostra classe derivant-la de QWidget (en el nostre exemple la classe Pantalla)
- Reimplementem el mètode paintEvent que es crida automàticament quan es repinta el Widget.
- Dintre de paintEvent(self,e) podem pintar el què vulguem mitjançant el QPainter
Classe derivada
class Pantalla(QtGui.QWidget):
def __init__(self):
# ULL: cridar el constructor de la classe base és IMPRESCINDIBLE
# (si sobreescrivim el constructor __init__, si no, no cal)
super(QtGui.QWidget,self).__init__()
self.initUI()
def initUI(self):
# inicialitzem aqui si tenim objectes interns
pass
def paintEvent(self,e):
# podriem liar-nos a pintar aquí mateix, o examinar l'event "e"
# anem al lio...
self.pintaPilota()
def pintaPilota(self):
# necessitem un objecte QPainter
qp = QtGui.QPainter()
qp.begin(self)
# podem optar per un Pen (pinta perifèric)
color = QtGui.QColor(0, 0, 0)
color.setNamedColor('#d4d4d4')
qp.setPen(color)
# o bé per un Brush (farcit). El color és RGB, òbviament
qp.setBrush(QtGui.QColor(200, 0, 0))
# PER FI, PINTEM LA PILOTA!
posx, posy = 20, 20
radx, rady = 10, 10
qp.drawEllipse(20,20,10,10)
# i tanquem el QPainter abans d'acabar
qp.end()
Exercicis
Ara cal que realitzis els següents exercicis: