0

我盯着代码看的时间越长,我对它的理解就越少,但它变得越有趣。在一种情况下,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(),则不会绘制圆圈。

4

1 回答 1

1

问题是我创建的paintEvent 的来源。当包含的文本框获得焦点时调用paintEvent。但是事件的更新区域只包括文本框,这确实有意义但我不知道。所以调用了paintEvent,但更新区域不包括圆圈。

我现在通过调用整个小部件的更新方法来规避这个问题,从而解决了这个问题。

于 2011-09-21T06:58:59.180 回答