读Pyqt4教程,带你入门Pyqt4 _012
颜色
颜色是指一个代表红(Red)、绿(Green)、蓝(Blue)(RGB)强度值组合的对象,有效的RGB值在0~255之间。我们可以用多种方式定义颜色,最常用的是RGB十进制或者十六进制值。也可以使用RGBA值,表示红(Red)、绿(Green)、蓝(Blue)和透明度(Alpha)。这里我们增加了额外的信息——关于透明度。Alpha值是255表明完全不透明,0是全透明,即颜色不可见。
#!/usr/bin/python
# -*- coding: utf-8 -*- # colors.py import sys, random
from PyQt4 import QtGui, QtCore class Example(QtGui.QWidget): def __init__(self):
super(Example, self).__init__() self.setGeometry(300, 300, 350, 280)
self.setWindowTitle('Colors') def paintEvent(self, e): qp = QtGui.QPainter()
qp.begin(self) self.drawRectangles(qp) qp.end() def drawRectangles(self, qp): color = QtGui.QColor(0, 0, 0)
color.setNamedColor('#d4d4d4')
qp.setPen(color) qp.setBrush(QtGui.QColor(255, 0, 0, 80))
qp.drawRect(10, 15, 90, 60) qp.setBrush(QtGui.QColor(255, 0, 0, 160))
qp.drawRect(130, 15, 90, 60) qp.setBrush(QtGui.QColor(255, 0, 0, 255))
qp.drawRect(250, 15, 90, 60) qp.setBrush(QtGui.QColor(10, 163, 2, 55))
qp.drawRect(10, 105, 90, 60) qp.setBrush(QtGui.QColor(160, 100, 0, 255))
qp.drawRect(130, 105, 90, 60) qp.setBrush(QtGui.QColor(60, 100, 60, 255))
qp.drawRect(250, 105, 90, 60) qp.setBrush(QtGui.QColor(50, 50, 50, 255))
qp.drawRect(10, 195, 90, 60) qp.setBrush(QtGui.QColor(50, 150, 50, 255))
qp.drawRect(130, 195, 90, 60) qp.setBrush(QtGui.QColor(223, 135, 19, 255))
qp.drawRect(250, 195, 90, 60) app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
app.exec_()
在例子中,我们绘制了9个有色矩形,第一行显示红色,具有不同的透明度。
paint.setBrush(QtGui.QColor(255, 0, 0, 80));
paint.drawRect(10, 15, 90, 60)
这里我们定义一个画刷并绘制一个矩形,画刷从一个初级图形对象,用来绘制图形的背景。 drawRect() 方法接受四个参数。头两个是坐标轴的x和y,第三和第四个是矩形的宽高,该方法使用当前的画笔和画刷绘制一个矩形。
QPen
QPen 是初级图形对象,用来绘制线条、曲线和矩形、椭圆、多边形或其他形状的轮廓。
#!/usr/bin/python
# -*- coding: utf-8 -*- # penstyles.py import sys
from PyQt4 import QtGui, QtCore class Example(QtGui.QWidget): def __init__(self):
super(Example, self).__init__() self.setGeometry(300, 300, 280, 270)
self.setWindowTitle('penstyles') def paintEvent(self, e): qp = QtGui.QPainter() qp.begin(self)
self.doDrawing(qp)
qp.end() def doDrawing(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) app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
app.exec_()
该例子中,我们绘制了6条线,使用了不同的画笔样式。其中5个预定义样式,我们也可以创建自定义样式,最后一个使用了自定义的样式。
pen.setStyle(QtCore.Qt.CustomDashLine)
pen.setDashPattern([1, 4, 5, 4])
qp.setPen(pen)
这里我们自定义了一个画笔样式,设置 QtCore.Qt.CustomDashLine 样式,并调用 setDashPattern() 方法。用一列数字定义样式,必须是一个偶数序列,技术定义破折号,而是定义间隔,数字越大,间隔或破折号越大。我们的样式是1像素的破折号、3像素的间隔、5像素的破折号和4像素的间隔。
QBrush
QBrush 是初级图形对象,用来绘制图形的背景,如:矩形,椭圆或多边形。画刷有三种类型。可以是预定义的渐变或纹理图案。
#!/usr/bin/python
# -*- coding: utf-8 -*- # brushes.py import sys
from PyQt4 import QtGui, QtCore class Example(QtGui.QWidget): def __init__(self):
super(Example, self).__init__() self.setGeometry(300, 300, 355, 280)
self.setWindowTitle('Brushes') def paintEvent(self, e): qp = QtGui.QPainter() qp.begin(self)
self.drawBrushes(qp)
qp.end() def drawBrushes(self, qp): brush = QtGui.QBrush(QtCore.Qt.SolidPattern)
qp.setBrush(brush)
qp.drawRect(10, 15, 90, 60) brush.setStyle(QtCore.Qt.Dense1Pattern)
qp.setBrush(brush)
qp.drawRect(130, 15, 90, 60) brush.setStyle(QtCore.Qt.Dense2Pattern)
qp.setBrush(brush)
qp.drawRect(250, 15, 90, 60) brush.setStyle(QtCore.Qt.Dense3Pattern)
qp.setBrush(brush)
qp.drawRect(10, 105, 90, 60) brush.setStyle(QtCore.Qt.DiagCrossPattern)
qp.setBrush(brush)
qp.drawRect(10, 105, 90, 60) brush.setStyle(QtCore.Qt.Dense5Pattern)
qp.setBrush(brush)
qp.drawRect(130, 105, 90, 60) brush.setStyle(QtCore.Qt.Dense6Pattern)
qp.setBrush(brush)
qp.drawRect(250, 105, 90, 60) brush.setStyle(QtCore.Qt.HorPattern)
qp.setBrush(brush)
qp.drawRect(10, 195, 90, 60) brush.setStyle(QtCore.Qt.VerPattern)
qp.setBrush(brush)
qp.drawRect(130, 195, 90, 60) brush.setStyle(QtCore.Qt.BDiagPattern)
qp.setBrush(brush)
qp.drawRect(250, 195, 90, 60) app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
app.exec_()
该例子中,我们绘制了9个不同的矩形。
brush = QtGui.QBrush(QtCore.Qt.SolidPattern)
qp.setBrush(brush)
qp.drawRect(10, 15, 90, 60)
定义画刷对象,并设置到绘画者对象,调用 drawRect 方法绘制矩形。
在PyQt4教程的这部分中,我们做了一些基本的绘画。

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士)
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4593922.html
读Pyqt4教程,带你入门Pyqt4 _012的更多相关文章
- 读Pyqt4教程,带你入门Pyqt4 _009
QLineEdit QLineEdit 窗口组件用来输入或者编辑单行纯文本,有撤销/重做,剪切/粘贴和拖放功能. #!/usr/bin/python # -*- coding: utf-8 -*- # ...
- 读Pyqt4教程,带你入门Pyqt4 _005
对话框窗体或对话框是现代GUI应用不可或缺的一部分.dialog定义为两个或多个人之间的交谈.在计算机程序中dialog是一个窗体,用来和程序“交谈”.对话框用来输入数据.修改数据.改变程序设置等等. ...
- 读Pyqt4教程,带你入门Pyqt4 _004
在PyQt4教程的这部分中,我们将探讨应用中事件和信号的发生. 事件是GUI程序的重要部分,由用户或者系统产生.当我们调用应用的 exec_() 方法,应用进入主循环.主循环获取事件并把它们发往对象. ...
- 读Pyqt4教程,带你入门Pyqt4 _003
编程中的一个重要事情是布局管理,布局管理是如何在窗体上摆放窗口组件.可以有两种方式进行管理:绝对定位或使用布局类. 绝对定位 程序员用像素指定每个控件的位置和尺寸.使用绝对定位时,你必须理解几件事情. ...
- 读Pyqt4教程,带你入门Pyqt4 _002
在这节教程中,我们将创建菜单和工具栏. QMainWindow 类提供应用程序主窗口,可以创建一个经典的拥有状态栏.工具栏和菜单栏的应用程序骨架. 菜单栏 菜单栏是GUI应用程序最明显的部分之一,这是 ...
- 读Pyqt4教程,带你入门Pyqt4 _013
你是否曾经看着应用程序并思考特定的GUI项是如何产生的?大概每位程序员都这样过.然后你能看到你喜欢的GUI库提供的一系列窗口组件,但是你无法找到它.工具包通常仅仅提供最常用的窗口组件,比如按钮.文本组 ...
- 读Pyqt4教程,带你入门Pyqt4 _010
在PyQt4教程的这部分中,我们讨论拖放操作. 拖放(Drag-and-drop)指的是图形用户界面(Graphical user interface)中,在一个虚拟的对象上按着鼠标键将之拖曳到另一个 ...
- 读Pyqt4教程,带你入门Pyqt4 _006
窗口组件是应用程序的基本构建块.PyQt4编程工具包拥有范围广泛的各种窗口组件.按钮.选择框.滑块.列表框等等,程序员工作所需要的一切.在教程的这部分中,我们将介绍一些有用的窗口组件. QCheckB ...
- 读Pyqt4教程,带你入门Pyqt4 _008
QCalendarWidget QCalendarWidget 提供基于月份的日历窗口组件,它允许用户简单并且直观的选择日期. #!/usr/bin/python # -*- coding: utf- ...
随机推荐
- 关于RMQ问题的四种解法
什么是RMQ问题: RMQ (Range Minimum/Maximum Query):对于长度为n的数组A,回答若干询问RMQ(A,i,j)(i,j<=n-1),返回数组A中下标在i, ...
- 题目分享G 二代目
题意:有n组数,每组包含两个数,问在每组只能取一个的前提下能组成的最长的从1开始的连续自然数有几个? 分析:刚学了差分约束系统,很容易往转换成图的方向去想 将他读入的这n组数当成边读入 很容易会得到一 ...
- libevent(十)bufferevent 2
接上文libevent(九)bufferevent 上文主要讲了bufferevent如何监听读事件,那么bufferevent如何监听写事件呢? 对于一个fd,只要它的写缓冲区没有满,就会触发写事件 ...
- Thinkphp 缓存RCE
5.0.0<=ThinkPHP5<=5.0.10 . 漏洞利用条件: 1.基于tp5开发的代码中使用了Cache::set 进行缓存 2.在利用版本范围内 3.runtime目录可以 ...
- P1364 医院设置(树型结构)
传送门闷闷闷闷闷闷 ~~放一个可爱的输入框.~~ 考虑在O(n)的时间内求数以每个节点为医院的距离和. \(设想一下,如果我们已知以1为根节点的距离和f[1],如何求出子节点呢?\) 当医院从1转换到 ...
- 加速你的网络!软路由构建 去AD+国内域名加速解析+抗污染+速度优选 与PSW无缝集成 综合方案
本方案利用OpenWrt搭建4级DNS,实现 去AD + 国内域名加速解析 + 抗污染(域名解析按地区分流)+ 访问速度优选. 方案涉及部分软件配置细节可以参照之前博文:https://www.cnb ...
- C# 判断文件格式的一些总结
前提概述: 项目中 经常会有上传图片的地方 有的时候需要对图片类型做一些要求 这个时候就需要一些判断 虽然前段上传的时候可以去做类型的限制 或者后台接受的时候从file的type 中获取图 ...
- Nginx|构建简单的文件服务器(mac) 续-FastDFS安装(mac)|文件存储方案
目录 Nginx|构建简单的文件服务器(mac) 1 所需安装包 2 安装fastdfs-nginx-module-master 3 安装Nginx Nginx|构建简单的文件服务器(mac) 续上文 ...
- shiro 实现自定义权限规则校验
<span style="font-family: Arial, Helvetica, sans-serif;">在系统中使用shiro进行权限管理,当用户访问没有权限 ...
- pytest——pycharm中右击运行(run)没有问题,在terminal中运行pytest报错:E ModuleNotFoundError: No module named
参考了这个解决办法:https://blog.csdn.net/qq_36829091/article/details/82180866 我的是Windows,linux的和Windows的解决办法有 ...