我盯着代码的时间越长,我对代码的理解就越少,但它变得越有趣。在一种情况下,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中注释-case(),则不会绘制圆圈。
发布于 2011-09-21 06:58:59
问题是我创建的paintEvent的来源。当包含文本框获得焦点时,调用paintEvent。但是事件的更新区域只包含文本框,这确实是有意义的,但我不知道。因此调用了paintEvent,但是更新区域不包括圆圈。
我现在通过调用整个小部件的更新方法来解决这个问题,从而解决了这个问题。
https://stackoverflow.com/questions/7487905
复制相似问题