3+

QPainter and QScrollArea plactice

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

import sys

from PyQt4 import QtCore,QtGui

class paintArea(QtGui.QWidget):

    def __init__(self):
        super(paintArea, self).__init__()

        self.setMinimumWidth(500)
        self.setMinimumHeight(500)

        self.offscreen = QtGui.QPixmap(1000,1000)

        painter = QtGui.QPainter()
        painter.begin(self.offscreen)
        painter.setPen(QtCore.Qt.yellow)
        for i in range(10):
            painter.drawLine(10,i*10,100,i*10)
        painter.end()

    def paintEvent(self,e):
        painter = QtGui.QPainter()
        painter.begin(self)
        painter.drawPixmap(0,0,self.offscreen)
        painter.end()

class scrollArea(QtGui.QWidget):
    def __init__(self):
        super(scrollArea, self).__init__()

        self.scrollArea = QtGui.QScrollArea(self)

        self.scrollArea.setVerticalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOn )
        self.scrollArea.setWidgetResizable(False)

        self.paintArea = paintArea()
        self.scrollArea.setWidget(self.paintArea)

        self.layout = QtGui.QVBoxLayout(self)
        self.layout.addWidget(self.scrollArea)

def main():

    app = QtGui.QApplication(sys.argv)
    ex = scrollArea()
    ex.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

f:id:zey:20140919200115p:plain

;(function(document){ var pres = document.getElementsByTagName("pre") for(var i=pres.length; i--; ){  var el = makeOl(pres[i]) pres[i].appendChild(el) } function makeOl(pre){ var ol = document.createElement("ol") , li = document.createElement("li") , df = document.createDocumentFragment() , br = pre.innerHTML.match(/\n/g) || 0 ol.className = "preLine" ol.setAttribute("role", "presentation") // no lang, no line-number if( pre.className && ! /lang-./.test(pre.className) ){ br.length += 1 } for(var i=br.length; i--; ){ var li2 = li.cloneNode(true) df.appendChild(li2) } ol.appendChild(df) return ol } })(document)