2017-04-21 4 views
0

Ich möchte ein Python-Skript machen, wo ich ein Bild zeige und dann kann der Endnutzer einen Pfeil über dieses Bild zeichnen, indem er auf zwei Punkte klickt.Zeichnen Sie die Linie über das Bild mit PyQt

Ich möchte, dass die Linie ein Pfeil ist, und es nach dem Mauszeiger zeigen, bis der Benutzer zum zweiten Mal klickt.

Arbeiten mit Python3, PyQt4, Ubuntu.

Vielen Dank im Voraus

Antwort

0

Verwenden paintEventO und QPainter:

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_()) 
+0

Dank! es funktioniert für mich, musste daran herumtüfteln, Mauskoordinaten über das Bild zu bekommen. Nur eine letzte Sache ... Wie kann ich Linie mit einer Pfeilform an einem Ende zeichnen? da mein Ziel ist, Pfeil zu zeichnen :) – f126ck

+0

würde ich vorschlagen, nur ein Dreieck am Ende der Linie zu zeichnen @ f126ck – Veltro

+0

Danke !!! Ok, verstanden .. aber nur eine Sache. Ich schreibe ein größeres Programm, wo der Benutzer aufgefordert wird, selbst die Linie/den Pfeil zu zeichnen. Benutzer klicken Sie auf den Startpunkt und dann auf den Endpunkt der Vektorlinie. Ich möchte einen Mechanismus zur Verfügung stellen, der neben dem Benutzer gezeichnet wird, um ihm Feedback über die tatsächliche Arbeit des Programms zu geben. Ich dachte daran, die Linie nach den Mauszeigerkoordinaten zu zeichnen und sie dauerhaft über das Bild zu ziehen, wenn sie das zweite Mal klicken. (Um zu verstehen, was ich erreichen möchte, denken Sie an MS Paint, während Sie eine Linie zeichnen ...) – f126ck

Verwandte Themen