读Pyqt4教程,带你入门Pyqt4 _011

当咱们想要改变或者加强已存在的窗口组件时,或者准备从零开始建立自定义窗口组件时,能够使用绘图。咱们经过使用PyQt4工具包提供的绘图API来绘图。html

绘图在 paintEvent()法中进行。绘制代码在 QPainter 对象的 begin()end() 之间。python

绘制文本app

咱们从在窗口客户区绘制一些Unicode文本开始。dom

#!/usr/bin/python # -*- coding: utf-8 -*-

# drawtext.py

import sys from PyQt4 import QtGui, QtCore class Example(QtGui.QWidget): def __init__(self): super(Example, self).__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Draw Text') self.text = u'\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', 10)) qp.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text) app = QtGui.QApplication(sys.argv) ex = Example() ex.show() app.exec_()

在咱们的例子中,咱们绘制一些西里尔字母的文本,文正水平和垂直居中对齐。工具

def paintEvent(self, event):

在绘制事件中绘画。字体

qp = QtGui.QPainter() qp.begin(self) self.drawText(event, qp) qp.end()

QPainter 类负责全部的低级绘画。全部的绘制方法都在 begin()end() 方法之间。这里实际的绘制是代理给了 drawText() 方法。网站

paint.setPen(QtGui.QColor(168, 34, 3)) paint.setFont(QtGui.QFont('Decorative', 10))

这里咱们定义了画笔和字体,用来绘制文本。ui

paint.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text)

drawText() 方法在窗口上绘制文本, 绘制事件的 rect() 方法返回须要更新的矩形。spa

绘制点3d

点是能够绘制的最简单的图形对象,是窗口上的很小的一个区域。

#!/usr/bin/python # -*- coding: utf-8 -*-

# points.py

import sys, random from PyQt4 import QtGui, QtCore class Example(QtGui.QWidget): def __init__(self): super(Example, self).__init__() self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Points') def paintEvent(self, e): qp = QtGui.QPainter() qp.begin(self) self.drawPoints(qp) qp.end() def drawPoints(self, qp): qp.setPen(QtCore.Qt.red) size = self.size() for i in range(1000): x = random.randint(1, size.width()-1) y = random.randint(1, size.height()-1) qp.drawPoint(x, y) app = QtGui.QApplication(sys.argv) ex = Example() ex.show() app.exec_()

在这个例子中,咱们在客户区随机地绘制1000个红点。

paint.setPen(QtCore.Qt.red)

使用预约义的颜色常量,把画笔设为红色。

size = self.size()

每次咱们缩放窗口,都将产生绘制事件。经过 size() 方法获得窗口的尺寸,使用窗口尺寸来把点分布到窗口的客户区。

paint.drawPoint(x, y)

使用 drawPoint() 方法绘制点。

 

 

 

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(做者官方网站: 宝宝巴士 
转载自【宝宝巴士SuperDo团队】 原文连接: http://www.cnblogs.com/superdo/p/4593894.html

相关文章
相关标签/搜索