繁体   English   中英

PyQT:傻QPainter.drawEllipse

[英]PyQT: Silly QPainter.drawEllipse

我盯着代码看的时间越长,对它的理解就越少,但是却越有趣。 在一种情况下,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()

有人可以告诉我为什么在一种情况下实际上画椭圆而在另一种情况下没有画椭圆吗?

输出为:

...
还没
还没
还没
还没
还没
成功的
成功的
成功的
成功的
成功的
...

椭圆是否已绘制都没有关系。 如果我在“ not yet”情况下对drawEllipse()进行注释,则不会绘制任何圆圈。

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

我现在通过调用整个小部件的update-method来解决该问题,从而解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM