コードを見つめる時間が長ければ長いほど、理解できなくなりますが、面白くなります。QPainter が円を描画する場合もあれば、描画しない場合もあります。
私の問題は、成功した場合、QPainterが描画しないことです。一方、成功しなかった場合は引き分けになります。私が実際に達成したいのは、状態に応じて色を変えることです。このやや醜いコードは説明用です。QP.begin() をループの外側に移動するか、if 句の外側の最後に単一の drawEllipse() を配置しても、違いはありません。
def paintEvent(self, e):
# compute here diameter, offsets, etc. but nothing qt related
for i in xrange(5):
painter = QtGui.QPainter(self)
x_offset += 5
if self.isSuccessful():
print "Successful"
painter.setBrush(QtGui.QColor(0,255,0))
painter.drawEllipse(x_offset, y_offset, diameter, diameter)
else:
print "Not yet"
painter.setBrush(QtGui.QColor(0,0,255))
painter.drawEllipse(x_offset, y_offset, diameter, diameter)
painter.end()
楕円が実際に描かれている場合とそうでない場合がある理由を教えてもらえますか?
出力は次のとおりです。
...
未未 まだ
未
未 まだ 成功 成功 成功 成功 成功 ...
楕円が以前に描かれたかどうかは問題ではありません。「まだ」の場合に drawEllipse() をコメントすると、円は描画されません。