bug解决:QFileDialog.getSaveFileName点击取消(关闭选取窗口)后整个程序退出

一.情况一

源代码:


  
  1. def selectImage(self):
  2. '''
  3. 功能:选取需要增强的夜间图像,即从电脑中选取图像并显示在label上
  4. '''
  5. #参数三是默认路径(自己随便设),参数四是过滤哪些文件,比如下面就是只显示jpg或者png文件
  6. #fname,a=QFileDialog.getOpenFileName(self,'打开文件','.','图像文件(*.jpg *.png)')
  7. self.fname, ok = QFileDialog.getOpenFileName(self, '打开文件', 'D:/', '图像文件(*.jpg *.png)')
  8. #print(fname) fname是图片完整路径
  9. #在标签上放置图片
  10. self.readLabel.setPixmap(QPixmap(self.fname))
  11. return

bug原因:

应该是fname 没有获取引发后面的代码异常。

解决办法:

在QFileDialog.getSaveFileName函数后面打代码前先确保第二个参数不为空,如下


  
  1. def selectImage(self):
  2. '''
  3. 功能:选取需要增强的夜间图像,即从电脑中选取图像并显示在label上
  4. '''
  5. #参数三是默认路径(自己随便设),参数四是过滤哪些文件,比如下面就是只显示jpg或者png文件
  6. #fname,a=QFileDialog.getOpenFileName(self,'打开文件','.','图像文件(*.jpg *.png)')
  7. self.fname, ok = QFileDialog.getOpenFileName(self, '打开文件', 'D:/', '图像文件(*.jpg *.png)')
  8. #print(fname) fname是图片完整路径
  9. #在标签上放置图片
  10. print(ok)
  11. if ok:
  12. self.readLabel.setPixmap(QPixmap(self.fname))
  13. return

完美解决!

 

二.情况二

源代码:


  
  1. def enhancement(self):
  2. '''
  3. 功能:展示增强之后的图像
  4. '''
  5. img = cv.imread(self.fname)
  6. self.ans = MSRCP(img, sigma_list=[15, 80, 200], low_clip=0.01, high_clip=0.99)
  7. cv.imshow('MSRCP', self.ans)
  8. cv.waitKey(0)

 bug原因:

self.fname是在上那个函数中接受选取路径的,如果没有选取路径那么点击与下面这个函数相关的按钮,也会造成异常退出的情况,因为这是self.fname啥也没接收啊,就是还没被定义!

解决办法:

所以我们在窗口类,也就是这俩槽函数外面将此变量定义一下,然后再在槽函数里判断一下!如下


  
  1. def enhancement(self):
  2. '''
  3. 功能:展示增强之后的图像
  4. '''
  5. if self.fname is not None:
  6. img = cv.imread(self.fname)
  7. self.ans = MSRCP(img, sigma_list=[15, 80, 200], low_clip=0.01, high_clip=0.99)
  8. cv.imshow('MSRCP', self.ans)
  9. cv.waitKey(0)

 

 

 

 

 

文章来源: blog.csdn.net,作者:油炸冰淇凌,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_44593822/article/details/114792440

(完)