今天,帮一网友改程序,非常郁闷,一个小bug找了很就,于是把程序写下,作下记录:

程序的功能大致是,点击四个按钮,分别显示四个图片在窗口!

先上程序:

__author__ = 'Administrator'
try:from PySide import QtCorefrom PySide import QtGui
except ImportError:from PyQt4 import QtCorefrom PyQt4 import QtGui
class Mainwindow(QtGui.QWidget):def __init__(self):super(Mainwindow,self).__init__()self.img1=QtGui.QImage("D:\myicon.jpg")self.img2=QtGui.QImage("D:\one.jpg")self.img3=QtGui.QImage("D:\m2yicon.jpg")self.img4=QtGui.QImage("D:\myi3con.jpg")button1 = QtGui.QPushButton("1")button2 = QtGui.QPushButton("2")button3 = QtGui.QPushButton("3")button4 = QtGui.QPushButton("4")button1.clicked.connect(self.slotbutton1)button2.clicked.connect(self.slotbutton2)button3.clicked.connect(self.slotbutton3)button4.clicked.connect(self.slotbutton4)buttonlayout = QtGui.QHBoxLayout()buttonlayout.addWidget(button1)buttonlayout.addWidget(button2)buttonlayout.addWidget(button3)buttonlayout.addWidget(button4)mainlayout = QtGui.QVBoxLayout()mainlayout.addLayout(buttonlayout)self.setLayout(mainlayout)self.showimg = self.img1self.resize(self.showimg.width(),self.height())def paintEvent(self, e):painter = QtGui.QPainter(self)painter.drawImage(0,0,self.showimg)self.resize(self.showimg.width(),self.height())def slotbutton1(self):self.showimg = self.img1self.repaint()def slotbutton2(self):self.showimg = self.img2self.repaint()def slotbutton3(self):self.showimg = self.img3self.repaint()def slotbutton4(self):self.showimg = self.img4self.repaint()if __name__ == '__main__':import sysapp = QtGui.QApplication(sys.argv)mainwindow = Mainwindow()mainwindow.show()sys.exit(app.exec_())

我遇到的错误是什么呢?

下面这个代码片段是我改过的

       painter = QtGui.QPainter(self)painter.drawImage(0,0,self.showimg)

我没改之前是什么呢:

       self.painter = QtGui.QPainter(self)self.painter.drawImage(0,0,self.showimg)

错误信息是:QPaintDevice: Cannot destroy paint device that is being painted

我对self.a和a的理解是,带了self的话,会是a的作用域变为整个对象域,不加的话,就是整个函数域

所以,我们得记住重载paintEvent()函数的时候,里面的Qpainter()对象一定不能带self,不然就会出现析构错误.

错误案例(QPaintDevice: Cannot destroy paint device that is being painted)相关推荐

  1. QPaintDevice: Cannot destroy paint device that is being painted

    在paintEvent中,使用QPainter * 绘制图像出现此问题.解决: 1.改为不使用QPainter指针. 2.添上    save()和restore()函数 QPainter paint ...

  2. 菜鸟修炼笔记--QT--“QPaintDevice: Cannot destroy paint device that is being painted”

    菜鸟修炼笔记--QT--"QPaintDevice: Cannot destroy paint device that is being painted" 前言 一.出错代码 二. ...

  3. AIX 5.3安装Oracle 10g错误案例--ruInstaller

    AIX 5.3安装Oracle 10g错误案例--runInstaller 系统环境: 操作系统:  AIX5300-08 Oracle软件:Oracle 10g(64位) 错误现象:   客户一个A ...

  4. QPainter::begin: Paint device returned engine == 0, type: 2 解决方法,在使用第三方库Qt可视化节点编辑器时

    QT节点编辑器:https://github.com/paceholder/nodeeditor 在使用的时候,沿着对角线缩放节点会出现崩溃的情况 报出来的错误却是:Qt begin: Paint d ...

  5. QPainter的使用过程中遇到的一些问题,QWidget::paintEngine: Should no longer be called QPainter::begin: Paint device

    报错信息 QWidget::paintEngine: Should no longer be called QPainter::begin: Paint device returned engine ...

  6. Oracle RAC错误之--oifcfg错误案例

    Oracle RAC错误之--oifcfg错误案例 系统环境: 操作系统:RedHat EL5 Cluster: Oracle GI(Grid Infrastructure) Oracle:  Ora ...

  7. AIX 访问Linux NFS共享错误案例

    AIX 访问Linux NFS共享错误案例 系统环境: 操作系统: RedHat EL4.AIX 5.3 错误现象: Linux 作为NFS Server ,AIX host 作为NFS Client ...

  8. 遇到 ORACLE 错误 1115,ORA-01114、ORA-27067错误案例一则

    ORA-01114.ORA-27067错误案例一则 今天有朋友问到如下一则案例,ORA-01114,ORA-27067以及OSD-04026错误同时出现: *** ACTION NAME:() 200 ...

  9. MySQL数据库“十宗罪”(十大经典错误案例)

    各位技术老铁们,福利来了!今天给大家说说<数据库中十大经典错误案例> 老张我在刚开始学习数据库的时候,没少走弯路.经常会遇到各种稀奇古怪的 error 信息,遇到报错会很慌张,急需一个解决 ...

最新文章

  1. 【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )
  2. Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
  3. python 简单图像处理(8) 直方图均衡化
  4. 剪刀,石头,布,小游戏脚本
  5. SSD硬盘 全盘安全擦除
  6. Android 进程常驻(5)----开机广播的简单守护以及总结
  7. 开源 协作工具_使用HackMD在开源项目上进行协作
  8. ai人工智能的数据服务_从AI数据集中消除无意识的偏见
  9. 图片上添加文字--div
  10. Win10电脑如何查看本机mac地址
  11. BZOJ2325[ZJOI2011]道馆之战——树链剖分+线段树
  12. python爬虫可以做哪些好玩的地方_如何快速的找到好玩的旅游景点信息?Python爬虫帮你轻松解决...
  13. goods购物表MySQL的代码_python采用sqlachmy购物商城
  14. Oracle数据库索引使用及索引失效总结
  15. JAVA回合制pk游戏
  16. Markdown文档编写规则:标题
  17. 国际网页短信平台搭建|后台定制-移讯云短信系统
  18. java定义一个周长类三角形_point类 三点的三角形的周长、面积 编程求解矩形和圆面积 java 三角形的定义...
  19. 2020哔哩哔哩大数据面试题整理
  20. android 运行apk时崩溃,从Android Studio运行时安装APK时应用程序崩溃完美无缺

热门文章

  1. W5500EVB介绍
  2. vue生命周期函数可以操作dom_vue生命周期钩子函数(详解及使用场景)
  3. 前缀和【超详细讲解前缀和】
  4. 在线计费系统解决方案
  5. unity update 协程_Unity 协程的原理
  6. JVM面试常考的4个问题详解
  7. 熊猫卫士防病毒(panda ant 是什么
  8. 【JZOJ 省选模拟】迷宫(maze)
  9. WPF Expander控件简单样式
  10. html图片怎么预加载,如何利用CSS和Javascript实现图片预加载