实验室一个项目需要一个小工具去使用外接摄像头拍照,当我使用python+opencv已经搞定了摄像头部分的时候,我想何不简单使用PyQt写一个GUI界面,这样可以方便使用,也方便以后项目的一些拓展任务。
说做就做,使用了如下的示例代码,显示了第一个简单的GUI的demo。
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())
而第一次运行这个代码的时候,异常缓慢,经过了超过1分钟才能显示出如下窗口:
但是第二次运行该代码就会出错,内核崩溃,且没有报错,问题如下图:
解决方案:加上如下语句
app = 0
更新后的代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
app = 0#解决方案
app = QApplication(sys.argv)
w = QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())
结果:加上“app = 0”之后代码执行速度正常,且不会崩溃。
个人分析:认为是退出之后上次创建的app对象有残留在内存中,所以导致出错,所以每次重新创建前先重置app对象。