文章目录
前言
QPainter类负责绘画
简单来说,就是你想要将你的app设计成什么样子,都需要重写QPainter来实现
QPainter
简单的绘图,我们通常用QPainter,举个例子:
# -*- coding: utf-8 -*-
# 简单的QPainter程序
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyWindow(QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
self.setFixedSize(400, 400)
self.show()
def paintEvent(self, event):
# 在QMainWindow上绘图
qp = QPainter(self)
# 蓝色,粗细为2,实线
pen = QPen(Qt.blue, 2, Qt.SolidLine)
qp.setPen(pen)
# 画一个直径400的圆
qp.drawEllipse(0, 0, 400, 400)
app = QApplication(sys.argv)
win = MyWindow()
sys.exit(app.exec_())
这就是一个简单的Qt程序,效果就是建立一个400*400大小的窗口,并在中心化一个直径400的圆。
三种方法自定义paintEvent()函数
但这个程序其实很有问题,因为我们自己做开发的时候,不可能直接在主窗口上绘图,通常来讲,我们会给主窗口一个或则多个container,然后container里面再放入各种widget,而我们需要绘制的内容,往往是在这些widget当中的。比如我们将上面的code改改,添加一个Qwidget:
def __init__(self):
super(MyWindow, self).__init__()
self.setFixedSize(400, 400)
self.widget = QWidget(self)
self.widget.setFixedSize(300, 300)
self