讀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

相關文章
相關標籤/搜索