首页 > 解决方案 > 当我在按下按钮时调用 pyqt5 中的方法时,如何从方法中捕获异常

问题描述

当我在“clicked.connect”中调用方法时,如何从方法中捕获异常。我所做的是:

    try:
        self.parameter_search.clicked.connect(self.search.filter)
    except Exception as e :
        self.error_msg.setText(str(e))
        self.error_msg.exec_()

 def filter(self):
    if self.path is None:
        raise Exception("No file was choosen")
    if self.Enter.text()=="":
        raise Exception("No parameter was enterd")
    value=self.Enter.text()
    data=self.read_file(self.path)
    choosen_parameter=self.parameter.currentText()
    if choosen_parameter=="Choose a Paramter":
        raise Exception("No Parameter was choosen")
    if value.isdigit():
        data=data[data[choosen_parameter]==str(float(value)).replace('.',',')]
    else:
        data=data[data[choosen_parameter]==str(value)]        
    if data.empty:
        raise Exception("This Value isn't existed please try again!")
    value=self.correct(value)
    data.to_csv(self.dir+choosen_parameter+"="+value+".csv", index=False,sep=";")
    self.prog_msg.exec_()

当我这样做时,什么也没发生我应该怎么做才能捕捉到异常

标签: pythonexceptionpyqtpyqt5

解决方案


它不能,应该理解,连接仅向 Qt 事件循环表明,当信号发出时,将调用一些可调用对象,而不是其他任何东西。

如果要处理异常,则使用中间函数:

    self.parameter_search.clicked.connect(self.on_clicked)

def on_clicked(self):
    try:
        self.search.filter()
    except Exception as e :
        self.error_msg.setText(str(e))
        self.error_msg.exec_()

推荐阅读