pyqt Line edit仅在编辑或失去焦点后触发槽函数

本文介绍了如何结合Qt中的editingFinished()信号和isModified()方法,确保只有当输入框内容发生变化且编辑完成后,才执行相应的槽函数。通过设置setModified(False)防止不必要的重复触发,从而优化用户交互体验。
摘要由CSDN通过智能技术生成

信号用editingFinished()

self.lineEdit.editingFinished.connect(self.edit_finish)

这个函数会在被编辑后或者失去焦点(如选中其它控件或按下回车之类)后发出信号,这就导致一个问题即如果按下回车就会触发槽函数,失焦后会再次触发。而且即使控件中的文本未发生改变也会触发槽函数。如果想避免这种情况可以尝试使用isModified()方法。举例来说,我们希望仅仅在输入框中的文本发生改变,且编辑完成(键入回车或者失去焦点)时打印输入框中的文本,那么:

def edit_finish(self):
    if self.lineEdit.isModified():
        print(self.lineEdit.text())
        print("Editing Finished")
    self.lineEdit.setModified(False)

本文仅做个人笔记所用,如有错误欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值