当我将editingFinished
的信号QLineEdit
连接到包含执行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
将被执行两次而不是一次。
发布于 2016-05-26 19:29:44
当按下返回或输入键或行编辑丢失焦点见文件时,将发出editingFinished
信号。通过editingFinishedEvent
,焦点从行编辑到对话框,第二次发出信号。您可以使用returnPressed
信号代替。只有在按下“返回”或“输入”键时才会发出。
发布于 2019-04-03 15:03:39
我认为在启动对话框之前可以断开插槽,然后再重新连接:
class Foo(QLineEdit):
def __init__(self):
super().__init__()
self.editingFinished.connect(self.editingFinishedEvent)
def editingFinishedEvent(self):
# disconnect
self.editingFinished.disconnect()
dialog = QDialog()
dialog.exec_()
# re-connect
self.editingFinished.connect(self.editingFinishedEvent)
这样,聚焦或返回按压都会触发插槽,但只会触发一次.
https://stackoverflow.com/questions/37458898
复制相似问题