首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQT:愚蠢的QPainter.drawEllipse

PyQT:愚蠢的QPainter.drawEllipse
EN

Stack Overflow用户
提问于 2011-09-20 15:42:01
回答 1查看 3.1K关注 0票数 0

我盯着代码的时间越长,我对代码的理解就越少,但它变得越有趣。在一种情况下,QPainter画圆圈,而在另一种情况下,它不画圆圈。

我的问题是,如果它成功了,QPainter 就不会画。另一方面,如果它没有成功,它就会进行绘图。我真正想要实现的是根据状态改变颜色。这段相当难看的代码是用来说明的。将QP.begin()移到循环之外或在if-子句外最后只有一个drawEllipse()没有任何区别。

代码语言:javascript
复制
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(),则不会绘制圆圈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-21 06:58:59

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7487905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档