You need to sign in or sign up before continuing.
canvas.py 1.55 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
import sys
import time
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QGraphicsView, QGraphicsScene,QPushButton, QVBoxLayout, QGraphicsLineItem
from PyQt5.QtGui import QPainter, QColor, QFont, QPen
from PyQt5.QtCore import Qt, QRectF, QPointF, QLineF

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.View = ViewDT(self)
        self.button = QPushButton('Clear', self)
        self.button.clicked.connect(self.handleClearView)
        layout = QVBoxLayout(self)
        layout.addWidget(self.View)
        layout.addWidget(self.button)

    def handleClearView(self):
        self.View.scene().clear()

class ViewDT(QGraphicsView):
    def __init__(self,parent):
        QGraphicsView.__init__(self,parent)
        self.setScene(QGraphicsScene(self))
        self.setSceneRect(QRectF(self.viewport().rect()))
        self.test = False
        self.start = 0
        self.end = 0

    def mousePressEvent(self,event):
        self.test = True
        self.__start = event.pos()
        self.start = QPointF(self.mapToScene(event.pos()))
            
    def mouseMoveEvent(self,event):
        self.end = QPointF(self.mapToScene(event.pos()))
        if self.start != self.end and self.test is True:
            self.scene().addItem(QGraphicsLineItem(QLineF(self.start,self.end)))
            self.start = self.end

    def mouseReleaseEvent(self, event):
        self.test = False

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())