python - 当我在按下按钮时调用 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_()
当我这样做时,什么也没发生我应该怎么做才能捕捉到异常
解决方案
它不能,应该理解,连接仅向 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_()
推荐阅读
- ios - 在 didChangeStatusBarFrame 之后 UIApplication statusBarFrame 不是最新的
- swift - Swift协变泛型函数:占位符类型是另一个的子类
- .htaccess - 将子目录重定向到查询字符串
- c - 在函数的参数中声明指针类型以修改链表
- firefox - 如何在 Firefox 中查看控制台语句?
- python - Pandas - 按字符串重新排序列包含概念并在它们之间进行比较
- java - 使用 JavaFX 时应用程序构造函数中的异常
- git - Git for Windows 远程拒绝主 -> 主(解包器错误)
- git - 为什么如果您的本地更改与上游更改冲突,您可以隐藏更改,执行拉取,然后取消存储?
- mysql - 什么是正确的 SELECT 语句来加入这个表