PyQt5学习笔记五(窗口绘图控件)

最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程

 废话不多说,请看正文!

QPainter

QPainter 类在QWidget (控件)上执行绘图操作,它是一个绘制工具,为大部分图形界面提供了高度优化的函数,使QPainter类可以绘制从简单的直线到复杂的饼图。

绘制操作在QWidget.paintEvent()中完成。绘制方法必须放在QtGui.QPainter 对象的begin()和end() 之间。QPainter 类在控件或其他绘图设备上执行较低级别的图形绘制功能。

QPainter 类的方法
方法描述
begin()开始在目标设备上绘制。
drawArc()再开始角度和最终角度之间画弧
drawEllipse()在一个矩形内画一个椭圆。
drawLine(int x1,int y1,int x2,int y2)绘制一条指定端点坐标的线。绘制从(x1,y1)到(x2,y2)的直线并且设置当前画笔位置为(x2,y2)
drawPixmap()从图像文件中提取Pixmap并将显示在特定的位置。
drwaPolygon()使用坐标数组绘制多边形、
drawRect(int x1,int w, int y2)给定宽度w和高度W 和高度 h 从左上角坐标(x1,y1)绘制一个图像

drawText()

显示给定坐标处的文字。
fillRext()使用QCcolor 参数填充矩形
setBrush设置画笔风格
setPen()设置用于绘制的笔的颜色、大小、和格式。
画笔风格
枚举类型描述
Qt.Nopen没有线。比如Qpainter.drawRect()填充,但没有绘制任何边界线。
Qt.SolidLine一条简单的线。
Qt.DashLine由一些像素分隔的短线。
Qt.DotLine由一些像素分隔的点
Qt.DashDotLint轮流交替的点和短线。
Qt.DashDotDoLine一条短线,两个点
Qt.MPenStyle画笔风格的掩码

QPixmap

QPixmap 类用于绘图设备的图像显示,它可以作为一个QPaintDevice 对象,也可以加载到一个控件中,通常是标签或按钮,用于标签或按钮上的显示图像。QPixmap 可以读取的图像文件类型有BMP , GIF , JPG  ,  JPEG ,  PNG,  PBM , PGM , PPM , XBM , XPM 等。

QPixmap类中常用方法
方法描述
copy()从QRect 对象复制到 QPixmap对象
fromImage()将QImage 对象转换为QPixmap对象
grabWidget()从给定的窗口小控件创建一个像素图
grabWindow()在窗口中创建数据的像素图
load()加载图像文件作为QPixmap对象。
save()将QPixmap 对象保存为文件
toImage()将QPixmap对象转换为QImage对象

拖曳与剪贴板

为用户提供的拖曳功能很直观,很多桌面应用程序中,复制或移动对象都可以通过拖曳来完成


百度百科:MIME词条

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义文件名,以及一些媒体文件打开方式。

它是一个互联网标准,扩展了电子邮件标准,使其能够支持:

非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。

每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。

常见的MIME类型(通用型):

超文本标记语言文本 .html text/html

xml文档 .xml text/xml

XHTML文档 .xhtml application/xhtml+xml

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

PDF文档 .pdf application/pdf

Microsoft Word文件 .word application/msword

PNG图像 .png image/png

GIF图形 .gif image/gif

JPEG图形 .jpeg,.jpg image/jpeg

au声音文件 .au audio/basic

MIDI音乐文件 mid,.midi audio/midi,audio/x-midi

RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar


MimeData类函数允许检测和使用方便的MIME类型
判断函数设置函数获取函数MIME类
hasText()text()setText()text/plain
hasHtml()html()setHtml()text/html
hasUrls()urls()setUrls()text/uri-list
hasImage()imageDate()setImageDate()image/*
hasColor()colorData()setColorData()application/x-color

许多QWidget对象都支持拖曳动作,允许拖曳数据的控件必须设置 QWidget.setDragEnabled() 为 True,控件应该响应拖曳事件,以便存储所拖曳的数据。

拖曳事件表
事件描述
DragEnterEvent当执行一个拖曳控件操作,并且鼠标进入控件时,这个事件将会触发。在这个事件中可以获得被操作的窗口控件,还可以有条件的接受或拒绝该拖曳操作。
DragMoveEvent在执行一个拖曳控件操作时会触发该事件。
DragLeaveEvent当执行一个拖曳控件操作,并且鼠标指针离开该控件时,这个事件将会触发。
DropEvent当拖曳操作在目标控件上被释放时,这个事件被触发

QClipboard

Qclipboard 类提供了对系统剪切板的访问,可以在应用程序之间复制和粘贴数据,它的操作类似于QDrag类

QApplication 类有一个静态方法clipboard(), 它返回对剪贴板对象的引用任何类型的MimeData都可以从剪贴板复制或粘贴。

QClipboard类中常用的方法
方法描述
clear()清除剪贴板的内容。
setImage()将QImage对象复制到剪贴板中。
setMimeData()将MIME数据设置为剪贴板。
setPixmap()从剪贴板中复制Pixmap对象。
setText()从剪贴板中复制文本。
text()从剪贴板中检索文本。
QClipboard类中的信号
信号描述
dataChanged当剪贴板内容发生变化时,这个信号被发射。

日历和时间

QCalendar

Qcalendar 是一个日历控件, 它提供一基于月份的视图,默认选中的是今天的日期,也可以对日期的范围进行规范。

QCalendar类中的常用方法
方法描述
setDataRange()设置日期范围供选择
setFirstDayOfWeek

重新设置星期的第一个天,默认是星期日。其参数枚举值如下:

Qt.Monday,  星期一

Qt.Tuesday,  星期二

Qt.Wednesday ,  星期三

Qt.Thursday ,  星期四

Qt.Friday ,  星期五

Qt.Saturday,  星期六

Qt.Sunday , 星期日

setMinimumDate()设置最小日期
setMaximumDate()设置最大日期
setSelectedDate()设置一个QData对象,作为日期控件所选定的日期
maximumDate()获取日历控件的最大日期
minimumDate()获取日历控件的最小日期
selectedDate()返回当前选定的日期
setGridvisible()设置日历控件是否显示网络

QDateTimeEdit

QDateTimeEdit 是一个允许用户编辑时间的控件,可以使用键盘和上下箭头按钮来增加或减少日期时间值。

QDateTimeEdit 通过 setDisplayFormat() 函数来设置显示的日期时间格式。

QDateTimeEdit 类的常用方法
方法

描述

setDisplayFormat()

设置日期时间格式:

yyyy,  代表年份,用四位数表示。

MM, 代表月份,取值范围为01-12

dd,  代表日,  取值在01-31

HH, 代表小时, 取值范围在00-23

mm ,  代表分钟, 取值范围在00-59

ss, 代表秒, 取值范围在00-59

setMinimumDate()设置控件的最小日期
setMaximumDate()设置控件的最大日期
time()返回编辑的时间
date()返回编辑的日期
QDateTimeEdit类中的信号
信号含义
dateChanged当日期改变发射此信号
dateTimeChanged当日期时间改变时发射此信号
timeChanged当时间改变时发射此信号。

菜单栏、工具栏与状态栏

要创建一个弹出菜单,PyQt API 提供了createPopupMenu() 函数;memuBar()函数用于返回主窗口的QMenuBar 对象;addMenu()函数可以将菜单添加到菜单栏中,通过addAction() 函数可以在系统菜单中进行添加操作。

设计菜单系统时的一些重要方法
方法描述
menuBar()返回主窗口的QMenuBar对象
addMenu()在菜单栏中添加一个新的QMenu对象。
addAction()向QMenu小控件中添加一个操作按钮,其中包含文本或图标。
setEnabled()将操作按钮状态设置为启用/禁用
addSeperator()在菜单中添加一条分隔线。
clear()删除菜单/菜单栏的内容。
setShortcut()将快捷键关联单操作按钮。
setText()设置菜单项的文本。
setTitle ()设置QMenu小控件的标题。
text()返回与QAction对象关联的文本
title()返回QMenu 小控件的标题

QToolBar

QToolBar 控件是由文本按钮、图标或其他小控件按钮组成的可移动面板。通常位于菜单栏下面。

QToolBar 类中的常用方法
方法描述
addAction()添加具有文本或图标的工具按钮。
addSeperator()分组显示工具按钮。
addWidget()添加工具栏中按钮以外的控件
addToolBar()使用QMainWindow 类的方法添加一个新的工具栏
setMoveable()工具栏变得可移动
setOrientation()工具栏的方向可以设计为Qt.Horizontal 或 Qt.vertical

QStatusBar

MainWindow 对象在底部保留一个水平条,作为状态栏,用于显示永久的或临时的状态信息。

通过主窗口的QMainWindow 的setStatusBar() 函数设置状态栏,核心代码为:

self.statusBar = QStatusBar()
self.setStatusBar(self.statusBar)
QStatusBar 类的常用方法
方法描述
addWidget()在状态栏中添加给定的窗口小控件对象
addPermanentWIdget()在状态栏中永久添加给定的窗口小控件对象。
showMessage()在状态栏中显示一条临时信息指定时间间隔
clearMessage()删除正在显示的临时信息。
removeWidget()从状态栏中删除指定的小控件。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zpeien

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值