2012-09-01 23 views
5

Sınırlayıcı çizgisi olacak bir TextEdit widget'ı oluşturmaya çalışıyorum. Başlangıç ​​olarak, ben (bir QTextEdit bir alt sınıfı olarak) bir MyTextEdit sınıf oluşturmuş ve bunun paintEvent() yöntemi geçersiz kıldık:PyQt içinde QPaintEvents'ları geçersiz kılma

: Ben sürü aşağıdaki hatalardan olsun bu kodu çalıştırmak çalışıyorum

import sys 
from PyQt4.QtGui import QApplication, QTextEdit, QPainter 

class MyTextEdit(QTextEdit): 
    """A TextEdit widget derived from QTextEdit and implementing its 
     own paintEvent""" 

    def paintEvent(self, event): 
     painter = QPainter(self) 
     painter.drawLine(0, 10, 10, 10) 
     QTextEdit.paintEvent(self, event) 

app = QApplication(sys.argv) 
textEdit = MyTextEdit() 
textEdit.show() 

sys.exit(app.exec_()) 

QPainter::begin: Widget painting can only begin as a result of a paintEvent 
QPainter::begin: Widget painting can only begin as a result of a paintEvent 
... 

Neyi yanlış yapıyorum? bir widget bir viewport varsa

cevap

7

, sen QPainter kurucusuna o geçmek zorunda: yani niçin çalışmadığını

painter = QPainter(self.viewport()) 
+0

ilginç, evet, ben çözemedim. Bu bakış açısı beni her zaman koruyor. Teşekkürler! –