簡體   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