Skip to content

Instantly share code, notes, and snippets.

@EntityReborn
Created July 1, 2011 02:01
Show Gist options
  • Save EntityReborn/1057725 to your computer and use it in GitHub Desktop.
Save EntityReborn/1057725 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
from PyQt4 import QtCore, QtGui
class GraphWidget(QtGui.QGraphicsView):
def __init__(self):
super(GraphWidget, self).__init__()
self.font = QtGui.QFont("System")
fontinfo = self.finfo = QtGui.QFontMetrics(self.font)
self.lsize = fontinfo.size(0, "A")
self.wsize = QtCore.QSize(self.lsize.width() * 80, self.lsize.height() * 25)
scene = QtGui.QGraphicsScene(self)
scene.setItemIndexMethod(QtGui.QGraphicsScene.NoIndex)
scene.setSceneRect(-200, -200, self.wsize.width(), self.wsize.height())
self.setScene(scene)
self.setCacheMode(QtGui.QGraphicsView.CacheBackground)
self.setViewportUpdateMode(QtGui.QGraphicsView.BoundingRectViewportUpdate)
self.setRenderHint(QtGui.QPainter.Antialiasing)
self.setMinimumSize(self.wsize.width(), self.wsize.height())
self.setWindowTitle("Testing")
def drawBackground(self, painter, rect):
sceneRect = self.sceneRect()
painter.setFont(self.font)
painter.setPen(QtCore.Qt.black)
message = "A"*80
painter.drawText(sceneRect, (message + "\n")*25)
for x in xrange(3):
self.drawCharAt(painter, "Z", x, 1)
def drawCharAt(self, painter, char, x = 1, y = 1):
x = self.lsize.width() * x
y = self.lsize.height() * y
painter.setFont(self.font)
painter.setPen(QtCore.Qt.green)
painter.drawRect(x, y-self.lsize.height(), self.lsize.width(), self.lsize.height())
painter.setPen(QtCore.Qt.black)
painter.drawText(x, y, char)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
widget = GraphWidget()
widget.show()
sys.exit(app.exec_())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment