一、问题描述
dialog窗口accept提示两次。
二、我的操作
- pyQt软件开发,用QtDesigner设计了一个
Dialog with Buttons
窗口,添加lineEdit
组件用于接受输入。 - 用PyUic工具将界面
.ui
文件转换为.py
文件; - 重写
accept
槽函数验证输入是否为空,若为空则提示;
def accept(self):
if not self.ui.line_edit.text().strip():
QMessageBox.warning(self, "警告", "请输入名称")
return
super().accept() # Call accept only if validation passes
- 在代码中将点击
确定
与accept
槽函数connect。
def __init___(self)
self.ui.button_box.accepted.connect(self.accept)
5.在运行时发现若为空,提示两次。
三、问题原因和解决办法
1.问题原因
信号连接重复:由于是创建Dialog with Buttons
窗体,并进行添加组件设计的窗口,在使用PyUic工具进行转换时,在ui_Dialong.py界面代码文件中,已经自动将信号连接了,所以如果我在逻辑代码中再次连接,将会调用两次accept()
2.解决方法
删除逻辑代码中连接槽函数的代码即可。
总结
解决了accept两次的bug