pyqt 取消后退出程序 打开文件对话框_PyQt5应用程序在QFileDialog上选择文件后关闭...

本文档介绍了一个使用PyQt5创建的应用程序,该程序旨在让用户通过QFileDialog选择图像并在主窗口中显示。当用户点击'取消'按钮时,应用程序意外关闭。问题在于`getImage`函数中,当用户选择图像并点击'确定'时,应用程序正常显示图像,但点击'取消'会关闭程序。需要解决这个问题,使取消操作不会导致程序退出。
摘要由CSDN通过智能技术生成

我试图在PyQt5上编写一个应用程序,通过QFileDialog打开一个图像并将其显示在主窗口上。代码如下:import sys

from PyQt5.QtCore import Qt

from PyQt5.QtGui import QPixmap, QIcon

from PyQt5.QtWidgets import (QWidget, QLabel, QHBoxLayout, QVBoxLayout,

QApplication, QPushButton, QSlider,

QFileDialog, QAction)

class Example(QWidget):

def __init__(self):

super(Example, self).__init__()

self.initUI()

def initUI(self):

path = 'image.png'

original_img_label = QLabel('Original')

processed_img_label = QLabel('Processed')

orig_img = QPixmap(path)

global orig_lbl

orig_lbl = QLabel(self)

orig_lbl.setPixmap(orig_img)

proc_img = QPixmap(path)

proc_lbl = QLabel(self)

proc_lbl.setPixmap(proc_img)

select_image_btn = QPushButton('Select image')

select_image_btn.clicked.connect(self.getImage)

clean_image_btn = QPushButton('Clean image')

thresh1_sld = QSlider(Qt.Horizontal, self)

thresh2_sld = QSlider(Qt.Horizontal, self)

v_orig_lay = QVBoxLayout()

v_orig_lay.addWidget(original_img_label)

v_orig_lay.addWidget(orig_lbl)

v_proc_lay = QVBoxLayout()

v_proc_lay.addWidget(processed_img_label)

v_proc_lay.addWidget(proc_lbl)

h_img_lay = QHBoxLayout()

h_img_lay.addStretch(1)

h_img_lay.addLayout(v_orig_lay)

h_img_lay.addStretch(1)

h_img_lay.addLayout(v_proc_lay)

h_img_lay.addStretch(1)

h_btn_lay = QHBoxLayout()

h_btn_lay.addStretch(1)

h_btn_lay.addWidget(select_image_btn)

h_btn_lay.addWidget(clean_image_btn)

h_btn_lay.addStretch(1)

v_main_lay = QVBoxLayout()

v_main_lay.addLayout(h_img_lay)

v_main_lay.addStretch(1)

v_main_lay.addWidget(thresh1_sld)

v_main_lay.addWidget(thresh2_sld)

v_main_lay.addLayout(h_btn_lay)

self.setLayout(v_main_lay)

self.setGeometry(300, 300, 350, 300)

self.setWindowTitle('Review')

self.show()

def getImage(self):

filter = "Images (*.png *.jpg)"

image_obj = QFileDialog.getOpenFileName(self, 'Open image', 'Desktop', filter)

self.orig_lbl.setPixmap(QPixmap(image_obj))

if __name__ == '__main__':

app = QApplication(sys.argv)

ex = Example()

sys.exit(app.exec_())

getImage函数由select_image_btn按钮调用,希望通过setPixmap将image_obj(图像路径)放在orig_lbl上。在

一切正常,直到我选择了一个图像并在文件对话框中单击“确定”。执行此操作时,应用程序将关闭。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值