Corrección de errores: QFileDialog.getSaveFileName hace clic en Cancelar (cierra la ventana de selección) y todo el programa se cierra

1. Situación uno

Código fuente:

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

Causa del error:

Debería ser que fname no obtuvo la excepción que causó el código subyacente.

Solución:

Asegúrese de que el segundo parámetro no esté vacío antes de escribir el código después de la función QFileDialog.getSaveFileName, de la siguiente manera

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

        return

¡Solución perfecta!

 

Dos. Situación dos

Código fuente:

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

 Causa del error:

self.fname acepta la ruta seleccionada en la función anterior. Si la ruta no está seleccionada, hacer clic en el botón relacionado con la función a continuación también causará una salida anormal, porque es self.fname y no recibió nada, simplemente ¡No definida!

Solución:

Así que definimos esta variable en la clase de ventana, es decir, fuera de las dos funciones de ranura, ¡y luego la juzgamos en la función de ranura! como sigue

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

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44593822/article/details/114792440
Recomendado
Clasificación