按下按钮时在pyqt5中调用方法时,如何从方法中捕获异常

时间:2020-07-17 19:10:43

标签: python exception pyqt 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_()

当我什么都没做时,我应该怎么做才能捕捉到异常

1 个答案:

答案 0 :(得分:2)

不能,应该理解,该连接仅向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_()