2017-03-13 4 views
3

PyQt5が新しく、ロードした画像の上にQPainterを描画する方法について私にはうまくいきませんでした(QPixmap( "myPic.png "))。私はpaintEventメソッド内でそれをやろうとしましたが、うまくいきませんでした。下のスニペットで読み込まれたイメージの上に線を描きたい場合は、どうやってそれをやりますか?PyQt5(Python)の画像の上に描画する

import sys 
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 

class Example(QWidget): 
    def __init__(self): 
     super().__init__() 
     self.setGeometry(30, 30, 500, 300) 
     self.initUI() 

    def initUI(self): 
     self.pixmap = QPixmap("myPic.png") 
     lbl = QLabel(self) 
     lbl.setPixmap(self.pixmap) 

     self.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 
+0

イメージを水平線で表示したいのですか、またはその変更を加えてイメージを保存しますか? – eyllanesc

+0

最初のもの。 qpainter.drawLine()のような画像の上にラインを表示 – Johan

答えて

4

使用paintEventQPainter

import sys 
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtCore import * 

class Example(QWidget): 
    def __init__(self): 
     super().__init__() 
     self.setGeometry(30, 30, 500, 300) 

    def paintEvent(self, event): 
     painter = QPainter(self) 
     pixmap = QPixmap("myPic.png") 
     painter.drawPixmap(self.rect(), pixmap) 
     pen = QPen(Qt.red, 3) 
     painter.setPen(pen) 
     painter.drawLine(10, 10, self.rect().width() -10 , 10) 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = Example() 
    ex.show() 
    sys.exit(app.exec_()) 

myPic.png

enter image description here

出力:

enter image description here

+0

私が欲しかったのは、すばやい返信をいただきありがとうございました! – Johan