开发者社区> 罗兵> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(3)-- 画线

简介: 【概览】 本文实现如下的程序:(在窗体中绘画出各种不同风格的线条)   主要步骤如下: 1、在eric6中新建项目,新建窗体 2、(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3、回到eric 6,对上一步得到的界面文件 drawing.ui 文件右击,编译窗体,得到 Ui_drawing.py 文件 4、然后再对 drawing.ui 文件右击,生成对话框代码,得到 drawing.py 文件。
+关注继续查看

【概览】

本文实现如下的程序:(在窗体中绘画出各种不同风格的线条

 

主要步骤如下:

1、在eric6中新建项目,新建窗体

2、(自动打开)进入PyQt5 Desinger,编辑图形界面,保存

3、回到eric 6,对上一步得到的界面文件 drawing.ui 文件右击,编译窗体,得到 Ui_drawing.py 文件

4、然后再对 drawing.ui 文件右击,生成对话框代码,得到 drawing.py 文件。(在drawing.py中添加自己的程序逻辑

5、py2exe打包成exe文件(此步略)

 

【正文】

接【概览】第4步:

在 drawing.py 中,先定义绘画事件:

    def paintEvent(self, event):
        qp = QtGui.QPainter()
        qp.begin(self)
        self.drawLines(qp) #自定义的画线方法
        qp.end()

然后,自定义画线方法:

    def drawLines(self,  qp):
        pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)

        qp.setPen(pen)
        qp.drawLine(20, 40, 250, 40)

        pen.setStyle(QtCore.Qt.DashLine)
        qp.setPen(pen)
        qp.drawLine(20, 80, 250, 80)

        pen.setStyle(QtCore.Qt.DashDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 120, 250, 120)

        pen.setStyle(QtCore.Qt.DotLine)
        qp.setPen(pen)
        qp.drawLine(20, 160, 250, 160)

        pen.setStyle(QtCore.Qt.DashDotDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 200, 250, 200)

        pen.setStyle(QtCore.Qt.CustomDashLine)
        pen.setDashPattern([1, 4, 5, 4])
        qp.setPen(pen)
        qp.drawLine(20, 240, 250, 240)

合起来,drawing.py 是这个样子:

# -*- coding: utf-8 -*-

"""
Module implementing Drawing.
"""
import sys

from PyQt5 import  QtGui, QtCore
from PyQt5.QtWidgets import QDialog, QApplication

from Ui_drawing import Ui_Drawing


class Drawing(QDialog, Ui_Drawing):

    def __init__(self, parent=None):
        super(Drawing, self).__init__(parent)
        self.setupUi(self)

    def paintEvent(self, event):
        qp = QtGui.QPainter()
        qp.begin(self)
        self.drawLines(qp)
        qp.end()

    def drawLines(self,  qp):
        pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)

        qp.setPen(pen)
        qp.drawLine(20, 40, 250, 40)

        pen.setStyle(QtCore.Qt.DashLine)
        qp.setPen(pen)
        qp.drawLine(20, 80, 250, 80)

        pen.setStyle(QtCore.Qt.DashDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 120, 250, 120)

        pen.setStyle(QtCore.Qt.DotLine)
        qp.setPen(pen)
        qp.drawLine(20, 160, 250, 160)

        pen.setStyle(QtCore.Qt.DashDotDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 200, 250, 200)

        pen.setStyle(QtCore.Qt.CustomDashLine)
        pen.setDashPattern([1, 4, 5, 4])
        qp.setPen(pen)
        qp.drawLine(20, 240, 250, 240)



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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python编程:socket实现udp通讯
Python编程:socket实现udp通讯
13 0
Python编程:orm之sqlalchemy模块
Python编程:orm之sqlalchemy模块
8 0
Python编程:socket实现udp通讯
Python编程:socket实现udp通讯
74 0
Python编程:orm之sqlalchemy模块
Python编程:orm之sqlalchemy模块
44 0
《面向ArcGIS的Python脚本编程》——导读
虽然Python被封装在ArcGIS的安装程序中,但是它并不是由Esri开发的,而是由一个庞大而活跃的Python用户社区负责维护和发展。在学习了Python的基础知识后,您将会发现Python在其他领域也有着广泛的应用。现在很多计算机入门课程都使用Python作为入门语言介绍编程的基础知识。
3139 0
用 eric6 与 PyQt5 实现python的极速GUI编程(系列02)---- 省市县(区)下拉列表多级联动
【概览】 本文实现如下的程序: 主要步骤如下: 1、在eric6中新建项目,新建窗体 2、(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3、回到eric 6,对上一步得到的界面文件 union.ui 文件右击,编译窗体,得到 Ui_union.py 文件 4、然后再对 union.ui 文件右击,生成对话框代码,得到 union.py 文件。
1718 0
用 eric6 与 PyQt5 实现python的极速GUI编程(系列01)--Hello world!
【题记】 我是一个菜鸟,这个系列是我的学习笔记。 PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错。 eric6 也是刚刚出来,eric6 与 PyQt5 结合的教程网上几乎没有。
1516 0
+关注
罗兵
数学专业。擅数据分析,涉stock、lotto。了解随机过程分析、神经网络。涉web前端、后端。了解vba、js,稍擅python
251
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载