为什么 QLineEdit 小部件在激活其他小部件时会生成 "editingFinished" 信号?
Why does a QLineEdit widget generate an "editingFinished" signal when other widgets are activated?
我试图理解为什么在选择其他小部件时会生成 QLineEdit "editingFinished" 信号。在下面的示例中,选择组合框时调用 "on_lineedit" 方法。为什么?
import sys
from PyQt5 import QtWidgets
class MyApp(QtWidgets.QDialog):
def __init__(self, *args):
super().__init__(*args)
# create combobox:
combobox = QtWidgets.QComboBox(self)
combobox.addItems(['Item 1', 'Item 2'])
# create line edit
lineedit = QtWidgets.QLineEdit(self)
lineedit.editingFinished.connect(self.on_lineedit)
# layout:
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget( combobox )
vbox.addWidget( lineedit )
self.setLayout(vbox)
def on_lineedit(self):
print('on_lineedit')
app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
我知道这个问题可以通过连接 "textChanged" 信号而不是 "editingFinished" 信号来避免,如下所示:
lineedit.textChanged.connect(self.on_lineedit)
我在其他地方也看到过类似的问题(下面的链接),但我仍然不明白为什么在选择组合框时会生成 "editingFinished" 信号。
Qt qspinbox editingFinished signal on value changed
Suppress QLineEdit editingFinished signal when certain button is clicked
来自http://doc.qt.io/archives/qt-4.8/qlineedit.html#editingFinished
This signal is emitted when the Return or Enter key is pressed or the line edit loses focus.
发射信号是因为它被设计成。您点击的另一个小部件在这里并不真正相关,相关的是行编辑失去焦点并且导致信号被发射。单击另一个小部件只是您的行编辑可能失去焦点的多种方式之一。
我试图理解为什么在选择其他小部件时会生成 QLineEdit "editingFinished" 信号。在下面的示例中,选择组合框时调用 "on_lineedit" 方法。为什么?
import sys
from PyQt5 import QtWidgets
class MyApp(QtWidgets.QDialog):
def __init__(self, *args):
super().__init__(*args)
# create combobox:
combobox = QtWidgets.QComboBox(self)
combobox.addItems(['Item 1', 'Item 2'])
# create line edit
lineedit = QtWidgets.QLineEdit(self)
lineedit.editingFinished.connect(self.on_lineedit)
# layout:
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget( combobox )
vbox.addWidget( lineedit )
self.setLayout(vbox)
def on_lineedit(self):
print('on_lineedit')
app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
我知道这个问题可以通过连接 "textChanged" 信号而不是 "editingFinished" 信号来避免,如下所示:
lineedit.textChanged.connect(self.on_lineedit)
我在其他地方也看到过类似的问题(下面的链接),但我仍然不明白为什么在选择组合框时会生成 "editingFinished" 信号。
Qt qspinbox editingFinished signal on value changed
Suppress QLineEdit editingFinished signal when certain button is clicked
来自http://doc.qt.io/archives/qt-4.8/qlineedit.html#editingFinished
This signal is emitted when the Return or Enter key is pressed or the line edit loses focus.
发射信号是因为它被设计成。您点击的另一个小部件在这里并不真正相关,相关的是行编辑失去焦点并且导致信号被发射。单击另一个小部件只是您的行编辑可能失去焦点的多种方式之一。