PyQt5:QPainter使用注意

官方文档:https://doc.qt.io/qtforpython/PySide2/QtGui/QPainter.html
QPainter是Qt中一个方便的绘图类,下面以“为界面填充背景”为例,说明一下QPainter使用时需要注意的点

先给出完整程序,其中’try/video_1.ui’是提前用designer写好的一个ui文件,'icon/bg_2.jpg’是一张背景图:

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter,QPixmap
from PyQt5 import uic

class Winform(QWidget):
    def __init__(self):
        super(Winform, self).__init__()
        self.ui = uic.loadUi('try/video_1.ui', baseinstance=self)

    def paintEvent(self, event):
        print("调用paintEvent成功!")
        painter = QPainter(self)
        painter.drawPixmap(self.rect(), QPixmap('icon/bg_2.jpg'))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Winform()
    form.show()
    sys.exit(app.exec_())


1. 继承QWidget
在这里插入图片描述
  根据上面官方文档的描述,想使用QPainter需要在paintEvent中写入相应功能,即重写该函数。该事件是可以自动触发一次的。我们自然需要对QWidget进行继承,不然是没法触发paintEvent事件的~

class Winform(QWidget):
super(Winform, self).__init__()


2. uic.loadUi
在这里插入图片描述
  使用uic.loadUi函数时,需要指定参数baseinstance=self,正如上面所述,这可以保证ui被创建在当前实例下(而非创建一个新实例),否则,paintEvent是无法触发的

3. painter=QPainter(self)
  类似地,实例化QPainter时也需要指定当前实例“self”,否则虽然paintEvent能被触发,但是不会作用到当前实例上,无法完成paint任务



所以,在使用QPainter时,既需要通过继承和重写来自动触发paintEvent事件,又需要注意将ui和painter作用到当前实例中!程序效果如下~在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值