zoukankan      html  css  js  c++  java
  • 读Pyqt4教程,带你入门Pyqt4 _011

    当我们想要改变或者增强已存在的窗口组件时,或者准备从零开始创建自定义窗口组件时,可以使用绘图。我们通过使用PyQt4工具包提供的绘图API来绘图。

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

    绘制文本

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

    #!/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'u041bu0435u0432 u041du0438u043au043eu043bu0430
      u0435u0432u0438u0447 u0422u043eu043bu0441u0442u043eu0439: 
    
      u0410u043du043du0430 u041au0430u0440u0435u043du0438u043du0430'
    
    
        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))

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

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

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

    绘制点

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

    #!/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

     

     

  • 相关阅读:
    [原创]Windows 7 下成功添加网络共享HP打印机
    [原创]PDFCreator自动保存及文件名带空格、后缀名丢失的解决方法(Windows 7通过)
    [原创]U872客户端“system.net.sockets.socketexception”的解决方法
    [转载]Windows 7默认共享无法访问
    [转载]使Excel不显示0值的三招
    [原创]使用空密码远程桌面连接
    分布式架构理论
    ffmpeg重要函数和结构体整理
    es~存储部分字段
    es~text与keyword的选择
  • 原文地址:https://www.cnblogs.com/superdo/p/4593894.html
Copyright © 2011-2022 走看看