【概览】

本文实现如下的程序:(在窗体中绘画出文字

主要步骤如下:

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 中,先准备要绘画的文本(self.text):

    def __init__(self, parent=None):
# ...
self.text = '\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\
\u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\
\u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430'

然后定义一个绘画事件:

    def paintEvent(self, event):
...

所有的绘画都发生在此绘画事件内。给此绘画事件添加四行代码!

        qp = QtGui.QPainter()
qp.begin(self)
self.drawText(event, qp)#自定义的绘画方法
qp.end()

QtGui.QPainter类负责所有低级别的绘画。

所有的绘画方法要放在 begin()end() 方法之间。当然,这里我们放的是自定义的drawText()方法

上面代码合起来是这样的:

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

后面的几篇关于绘画的文章中,上面这一坨代码几乎就不变了

当然了,变的是自定义的drawText方法:

    def drawText(self, event, qp):
qp.setPen(QtGui.QColor(168, 34, 3))#设置笔的颜色
qp.setFont(QtGui.QFont('Decorative', 20))#设置字体
qp.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text)#画出文本

最终的 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) self.text = '\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\
\u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\
\u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' def paintEvent(self, event):
qp = QtGui.QPainter()
qp.begin(self)
self.drawText(event, qp)
qp.end() def drawText(self, event, qp):
qp.setPen(QtGui.QColor(168, 34, 3))
qp.setFont(QtGui.QFont('Decorative', 20))
qp.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text) if __name__ == '__main__':
app = QApplication(sys.argv)
dlg = Drawing()
dlg.show()
sys.exit(app.exec_())

用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(1)-- 绘写文字的更多相关文章

  1. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列01)--Hello world!

    [题记] 我是一个菜鸟,这个系列是我的学习笔记. PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错. eric6 ...

  2. 用 eric6 与 PyQt5 实现python的极速GUI编程(35篇PyQT和200多篇Python)

    [题记] 我是一个菜鸟,这个系列是我的学习笔记. PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错. eric6 ...

  3. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列04)---- PyQt5自带教程:地址簿(address book)

    [引子] 在PyQt5自带教程中,地址簿(address book)程序没有完全实现界面与业务逻辑分离. 本文我打算用eric6+PyQt5对其进行改写,以实现界面与逻辑完全分离. [概览] 1.界面 ...

  4. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(2)-- 画点

    [概览] 本文实现如下的程序:(在窗体中绘画出[-100, 100]两个周期的正弦函数图像) 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编 ...

  5. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列02)---- 省市县(区)下拉列表多级联动

    [概览] 本文实现如下的程序: 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3.回到eric 6,对上一步得到的界面文件 ...

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

    [概览] 本文实现如下的程序:(在窗体中绘画出各种不同风格的线条) 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3.回到 ...

  7. python基础知识-GUI编程-TK-StringVar

    1.如何引出StringVar 之前一直认为StringVar就是类似于Java的String类型的对象变量,今天在想要设置StringVar变量的值的时候,通过搜索发现StringVar并不是pyt ...

  8. Python gui编程pyQt5安装步骤t

    Python gui编程pyQt5安装步骤         pip install PyQt5 Pip3 install PyQt5               https://riverbankco ...

  9. Python gui编程pyQt5安装步骤

    Python gui编程pyQt5安装步骤 =============================== -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWit ...

随机推荐

  1. 解压缩框架--SSZipArchive

    下载地址:https://github.com/ZipArchive/ZipArchive 如果你直接将框架文件夹拖入项目,构建时会出现以下错误 解决方案: 点击+以后会弹出 如果使用cocoaPod ...

  2. Python常见数据结构--列表

       列表 Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片.加.乘.检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最下的元素的方法. ...

  3. 《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复

    master数据库 master作为数据库的主要数据库,记录着SQL Server系统的所有系统级信息,例如登录用户.系统配置设置.端点和凭证以及访问其他数据服务器所需要的信息.master数据库还记 ...

  4. MyCat 学习笔记 第十一篇.数据分片 之 分片数据查询 ( select * from table_name limit 100000,100 )

    1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150:  330 ...

  5. ELK 信息统计分析-1

    Aggregations 格式如下: "aggregations"{ //可以简写为aggs "<aggregation_name>":{ //名称 ...

  6. Python2

    安装pycharm专业版,不要汉化 要想写的代码支持linux和2.0版本需要在开头加上注释 #/usr/bin/env python #-*- coding:utf-8 -*- 运算符 结果是值 算 ...

  7. 恶意IP远程登录Linux服务器脚本

    #!/bin/sh #auto drop ssh failed IP address #定义变量 SEC_FILE=/var/log/secure #如下为截取secure文件恶意ip 远程登录22端 ...

  8. 简单谈谈RAID

    RAID是“Redundant Array of Independent Disk”的缩写,翻译过来叫做独立磁盘的冗余阵列,其实就是磁盘的存储.访问.备份技术.在谈RAID之前,先简单学习一下存储器的 ...

  9. Dreamweaver 制作图片热点之后,点击热点部分会有个提示框,怎么去掉

    可以这么写试试看<map name="Map"> <area shape="rect" coords="364,31,517,64& ...

  10. 广度优先搜索 cdoevs 1226 倒水问题

    cdoevs 1226 倒水问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Description 有两个无刻度标志的水壶,分别可装 x 升 ...