QT5界面操作3: QPainter和paintEvent(self, event)的配合
一 说明
本篇继续以显示鼠标位置做例;用窗口的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)的配合相关推荐
- QT5界面操作2:如何用状态栏显示鼠标坐标
在文 QT界面操作1:如何跟踪鼠标位置?实现了鼠标位置捕获,这里用两种方式显示鼠标坐标 1)状态栏显示 2)窗口刷新显示 先看如何获取鼠标位置的代码. import sys from PyQt5.Q ...
- 【学习记录】QT5界面设计的踩坑记录
学习记录:QT5 界面设计的踩坑记录 前言 一.Qlabel显示视频与图片 1. 图片显示 1.1 显示格式 1.2 label随界面缩放 1.3 界面刷新 2. 视频显示 二.常见控件的StyleS ...
- linux设置逻辑卷进不了图形界面,LVM逻辑卷管理器图形界面操作
LVM逻辑卷管理器图形界面操作 LVM有关概念 LVM(Logical Volume Manager)即逻辑卷管理器,它最先是在Linux 2.4内核中被集成到内核中去的,它的出现改变了传统的磁盘空间 ...
- linux 修复图形界面,图形界面操作的备份和恢复Linux发行版
原标题:图形界面操作的备份和恢复Linux发行版 来自:Linux迷 链接:https://www.linuxmi.com/redo-rescue-2-0-6-linux.html 现在可以下载Red ...
- 如何解决iOS界面操作导致导致NSTimer暂停计时的问题?
如何解决iOS界面操作导致导致NSTimer暂停计时的问题? 在NSTimer代码后面加上以下代码,这样滚动scroll的时候就不会暂停了. NSRunLoop *t = [NSRunLoop cur ...
- 一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)
一脸懵逼学习oracle(图形化界面操作--->PLSQL图形化界面) 1:经过几天的折腾,终于将oracle安装成功,创建用户,授权等等操作,接下来就安安心心学习oracle: 安装好PLSQ ...
- 3D MAX界面操作教程及渲染技巧
3dmax软件是一款电脑设计辅助软件,广泛应用于建筑设计.室内设计.影视动画.广告设计.游戏设计等等,是三维设计师们不可或缺的一款软件. 这里小编为大家介绍该软件的工作界面,让广大初学者和爱好者有更加 ...
- dos界面操作mysql讲解
dos界面操作mysql讲解: 1.首先运行cmd进入dos界面,输入mysql -uroot -proot进入mysql数据库,此处假设安装mysql时设置的用户名和密码均为root. 2.操作my ...
- 【JSP】用户信息界面操作 ---- 用户信息修改
文章目录 用户信息界面操作 ---- 用户信息修改 Ⅰ.修改userinfo.jsp 实现修改页面跳转 Ⅱ.创建 userUpdate.jsp 修改页面 Ⅲ.完善 dbHelper类,添加用户修改方法 ...
最新文章
- MySQL Antelope和Barracuda的区别分析
- 【数理知识】特征值、特征向量、左特征向量
- Android消息机制——时钟显示和异步处理工具类(AsyncTask)
- Mybatisplus插件
- Abp vnext Web应用程序开发教程 7 —— 作者:数据库集成
- python3 md5_Python3.2 --md5
- ubantu系统之快捷键使用
- primefaces教程_Primefaces Spring和Hibernate集成示例教程
- maya mentray_mental ray渲染器下载
- 430单片机实现三人投票表决器_基于51单片机的三人表决器设计.doc
- 【动手学深度学习】01 Windows下安装环境
- 单GPU每秒76帧,重叠对象也能完美分割,多模态Transformer用于视频分割效果惊艳...
- 现代几何学在计算机科学中的应用,CNCC2017
- 756526-00-8,Cbz-N-amido-PEG4-acid末端羧酸可在活化剂(如EDC或HATU)存在下与伯胺基反应
- 记事本APP之Alpha报告
- ffmpeg生成hls点播
- 未来已来——云应用引擎CAE开启应用Serverless新时代
- java静态网页_【屌炸天源码分享】《企业网站html静态网页模板》
- c语言实验3报告及答案,C语言编程实验报告3
- 海伦公式也可以判断三角形