当我将QLineEdit
的信号editingFinished
连接到包含执行QDialog
的函数时,QLineEdit
的信号editingFinished
会再次发出。那个介绍看起来不太清楚。。。下一个例子将帮助您理解:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Foo(QLineEdit):
def __init__(self):
super().__init__()
self.editingFinished.connect(self.editingFinishedEvent)
def editingFinishedEvent(self):
dialog = QDialog()
dialog.exec_()
print('editing finished event occured !')
app = QApplication(sys.argv)
win = Foo()
win.show()
sys.exit(app.exec_())
该脚本创建并显示一个QLineEdit
。当我编辑QLineEdit
的值并按enter键时,editingFinishedEvent
方法应该执行一次。如果我删除dialog.exec_()
行,就会出现这种情况。但是如果不这样做,editingFinishedEvent
将执行两次而不是一次。在
我认为可以在启动对话框之前断开插槽,然后重新连接:
这样,无论是焦点输出还是返回按下都会触发插槽,但只会触发一次。在
当按下return或enter键或line edit失去焦点时,
editingFinished
信号被发出。通过editingFinishedEvent
焦点从行编辑变为对话框,信号再次发射。您可以使用returnPressed
信号。只有在按下回车键或回车键时才会发出。在相关问题 更多 >
编程相关推荐