一  说明

本篇继续以显示鼠标位置做例;用窗口的paintEvent事件进行显示。本例示范如何用painter、update、paintEvent几个方面的配套。

注意: QPainter几乎只能在窗口的paintEvent事件中使用。

二  示例代码

import sys
from PyQt5.QtCore import (QEvent, QTimer, Qt,QPoint)
from PyQt5.QtWidgets import (QApplication, QMenu,QMainWindow)
from PyQt5.QtGui import QPainterclass Widget( QMainWindow ):def __init__(self, parent=None):super(Widget, self).__init__(parent)self.text ='hello worlds'self.resize(1200, 800)self.move(100, 100)#设置标题self.setWindowTitle("Events")self.setMouseTracking(True)def mouseMoveEvent(self, event):#如果没有鼠标双击,执行globalPos = self.mapToGlobal(event.pos())x = globalPos.x()y = globalPos.y()self.text = '鼠标位置 {0:4d},{1:4d} '.format(x, y)self.update()def paintEvent(self, event):text = self.textpainter = QPainter(self)if self.text:#显示给定坐标处的文本,坐标,对齐方式。文本内容# painter.drawText(self.rect(), Qt.AlignBottom | Qt.AlignHCenter, self.message)painter.drawText(QPoint(50, 50), self.text);#5秒钟后触发清空信息的函数,并重新绘制事件# QTimer.singleShot(5000, self.clearMessage)# QTimer.singleShot(5000, self.update)if __name__ == "__main__":app = QApplication(sys.argv)form = Widget()form.show()app.exec_()

三、代码说明

3.1 定义一个全局变量,这是要显示的字符串

self.text ='hello worlds'

3.2  定义鼠标的坐标

def mouseMoveEvent(self, event):
    #如果没有鼠标双击,执行
    globalPos = self.mapToGlobal(event.pos())
    x = globalPos.x()
    y = globalPos.y()
    self.text = '鼠标位置 {0:4d},{1:4d} '.format(x, y)

self.update()

  • 鼠标移动后,坐标位置改变,保存位置  self.text = '鼠标位置 {0:4d},{1:4d} '.format(x, y)
  • 自动绘制:self.update()

3.3 绘制函数

  • 定义一个刷子,准备画本窗口:painter = QPainter(self)
  • 对窗口进行绘制:painter.drawText(QPoint(50, 50), self.text);

或用

painter.drawText(self.rect(), Qt.AlignCenter, self.text)

将文字显示在窗口中间。

四、效果

QT5界面操作3: QPainter和paintEvent(self, event)的配合相关推荐

  1. QT5界面操作2:如何用状态栏显示鼠标坐标

    在文  QT界面操作1:如何跟踪鼠标位置?实现了鼠标位置捕获,这里用两种方式显示鼠标坐标 1)状态栏显示 2)窗口刷新显示 先看如何获取鼠标位置的代码. import sys from PyQt5.Q ...

  2. 【学习记录】QT5界面设计的踩坑记录

    学习记录:QT5 界面设计的踩坑记录 前言 一.Qlabel显示视频与图片 1. 图片显示 1.1 显示格式 1.2 label随界面缩放 1.3 界面刷新 2. 视频显示 二.常见控件的StyleS ...

  3. linux设置逻辑卷进不了图形界面,LVM逻辑卷管理器图形界面操作

    LVM逻辑卷管理器图形界面操作 LVM有关概念 LVM(Logical Volume Manager)即逻辑卷管理器,它最先是在Linux 2.4内核中被集成到内核中去的,它的出现改变了传统的磁盘空间 ...

  4. linux 修复图形界面,图形界面操作的备份和恢复Linux发行版

    原标题:图形界面操作的备份和恢复Linux发行版 来自:Linux迷 链接:https://www.linuxmi.com/redo-rescue-2-0-6-linux.html 现在可以下载Red ...

  5. 如何解决iOS界面操作导致导致NSTimer暂停计时的问题?

    如何解决iOS界面操作导致导致NSTimer暂停计时的问题? 在NSTimer代码后面加上以下代码,这样滚动scroll的时候就不会暂停了. NSRunLoop *t = [NSRunLoop cur ...

  6. 一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)

    一脸懵逼学习oracle(图形化界面操作--->PLSQL图形化界面) 1:经过几天的折腾,终于将oracle安装成功,创建用户,授权等等操作,接下来就安安心心学习oracle: 安装好PLSQ ...

  7. 3D MAX界面操作教程及渲染技巧

    3dmax软件是一款电脑设计辅助软件,广泛应用于建筑设计.室内设计.影视动画.广告设计.游戏设计等等,是三维设计师们不可或缺的一款软件. 这里小编为大家介绍该软件的工作界面,让广大初学者和爱好者有更加 ...

  8. dos界面操作mysql讲解

    dos界面操作mysql讲解: 1.首先运行cmd进入dos界面,输入mysql -uroot -proot进入mysql数据库,此处假设安装mysql时设置的用户名和密码均为root. 2.操作my ...

  9. 【JSP】用户信息界面操作 ---- 用户信息修改

    文章目录 用户信息界面操作 ---- 用户信息修改 Ⅰ.修改userinfo.jsp 实现修改页面跳转 Ⅱ.创建 userUpdate.jsp 修改页面 Ⅲ.完善 dbHelper类,添加用户修改方法 ...

最新文章

  1. MySQL Antelope和Barracuda的区别分析
  2. 【数理知识】特征值、特征向量、左特征向量
  3. Android消息机制——时钟显示和异步处理工具类(AsyncTask)
  4. Mybatisplus插件
  5. Abp vnext Web应用程序开发教程 7 —— 作者:数据库集成
  6. python3 md5_Python3.2 --md5
  7. ubantu系统之快捷键使用
  8. primefaces教程_Primefaces Spring和Hibernate集成示例教程
  9. maya mentray_mental ray渲染器下载
  10. 430单片机实现三人投票表决器_基于51单片机的三人表决器设计.doc
  11. 【动手学深度学习】01 Windows下安装环境
  12. 单GPU每秒76帧,重叠对象也能完美分割,多模态Transformer用于视频分割效果惊艳...
  13. 现代几何学在计算机科学中的应用,CNCC2017
  14. 756526-00-8,Cbz-N-amido-PEG4-acid末端羧酸可在活化剂(如EDC或HATU)存在下与伯胺基反应
  15. 记事本APP之Alpha报告
  16. ffmpeg生成hls点播
  17. 未来已来——云应用引擎CAE开启应用Serverless新时代
  18. java静态网页_【屌炸天源码分享】《企业网站html静态网页模板》
  19. c语言实验3报告及答案,C语言编程实验报告3
  20. 海伦公式也可以判断三角形

热门文章

  1. TAS-LR 论文辅助笔记 图拉普拉斯正则项推导
  2. 数据集整理(ing)
  3. NTU 课程 CE7454:信息论概述
  4. 深度学习核心技术精讲100篇(三十一)-大众点评搜索基于知识图谱的深度学习排序实践
  5. 滴滴算法大赛算法解决过程 - 拟合算法
  6. Oracle SQL Developer语言设置
  7. java jcheckbox事件_JAVA事件-----JCheckBox和JRadioButton事件响应
  8. 苹果企业证书_企业签名App稳定吗?
  9. Python入门100题 | 第008题
  10. python3-matplotlib库简单入门