from Form6 import *
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QColorDialog, QDialog, QLabel
from PyQt5.QtGui import QPainter,QPixmap,QPen,QBrush,QColor,QPolygon,QPalette,QPolygonF
from PyQt5.QtCore import Qt,QPoint
class Canvas(QLabel):
choose_btn=-1
choose_fill_color=QColor()
def __init__(self):
super().__init__()
canvas = QPixmap(1200,800)
canvas.fill(QColor('gray'))
self.setPixmap(canvas)
self.pen_color = QColor()
self.brush = QBrush()
def mousePressEvent(self, event):
painter = QPainter(self)
pen = painter.pen()
pen.setWidth(2)
pen.setColor(self.pen_color)
painter.setPen(pen)
if self.choose_btn==0:
#直线
painter.drawLine(50,50,200,50)
pen.setstyle(Qt.DashLine)#虚线
painter.setPen(pen)
painter.drawLine(50, 100, 200,100)
pen.setcolor(Qt.darkMagenta)#颜色
pen.setStyLe(Qt.DashDotLine)#点划线
painter.setPen(pen)
painter.drawLine(50, 150,200,150)
pen.setColor(Qt.blue)#顔色
pen.setStyLe(Qt.SolidLine)#实线
painter.setPen(pen)
painter.drawLine(50, 200,200,200)
elif self.choose_btn==1:
#矩形
painter.drawRect(100,100,200,100)
elif self.choose_btn==2:
#椭圆形
painter.drawEllipse(120,120,150,100)
#绘制多边形
elif self.choose_btn==3:
points = [QPoint(100, 100),QPoint(300, 150),QPoint(350, 250),QPoint(200, 300),QPoint(120, 230)]
painter.drawPolygon(QPolygon(points))
elif self.choose_btn==4:
painter.setBrush(self.choose_fill_color)
painter.drawRect(100, 100, 200, 100)
elif self.choose_btn==5:
painter.setBrush(self.choose_fill_color)
painter.drawEllipse(120, 120, 150, 100)
elif self.choose_btn==6:
points = [QPoint(100, 100),QPoint(300, 150),QPoint(350, 250),QPoint(200, 300),QPoint(120, 230)]
painter.setBrush(self.choose_fill_color)
painter.drawPolygon(QPolygonF(points))
painter.end()
self.update()
class MyDialog(QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)
self.setupUi(self)
self.canvas = Canvas()
self.buju=QVBoxLayout(self.groupBox)
self.buju.addWidget(self.canvas)
def plot_line(self):
self.canvas.choose_btn =0
def plot_rect(self):
self.canvas.choose_btn =1
def plot_Eli(self):
self.canvas.choose_btn =2
def plot_duo(self):
self.canvas.choose_btn =3
def plot_fill_Rect(self):
self.canvas.choose_btn =4
def plot_fill_Eli(self):
self.canvas.choose_btn =5
def plot_fill_duo(self):
self.canvas.choose_btn =6
def showDialog(self):
dialog = QColorDialog()
dialog.setOption(QColorDialog.ShowAlphaChannel, on=True)
if dialog.exec_() == QDialog.Accepted:
color = dialog.selectedColor()
if color.isValid():
self.canvas.choose_fill_color = color
self.btn_fill_color.setStyleSheet("background-color: {};".formate(color.name(QColor.HexArgb)))
if __name__ =='__main__':
app = QApplication(sys.argv)
form = MyDialog()
#按钮连接槽函数
form.btn_Line.clicked.connect(form.plot_line)
form.btn_juxing.clicked.connect(form.plot_Rect)
form.btn_tuoyuan.clicked.connect(form.plot_Eli)
form.btn_duobian.clicked.connect(form.plot_duo)
form.btn_fill_juxing.clicked.connect(form.plot_fill_Rect)
form.btn_fill_tuoyuan.clicked.connect(form.plot_fill_Eli)
form.btn_fill_duobian.clicked.connect(form.plot_fill_duo)
form.btn_fill_color.clicked.connect(form.showDialog)
form.show()
sys.exit(app. exec_())