如何在不触发信号的情况下清除QLineEdit

时间:2014-09-11 00:27:55

标签: python pyqt

QLineEdit会在.clear().setText()方法上触发信号。 因此,每次使用这些方法来阻止LineEdit发出信号时,我需要.blockSignals(True)然后.blockSignals(False)。 我想知道是否有办法绕过它?

from PyQt4 import QtCore, QtGui    
app = QtGui.QApplication([])

class LineEdit(QtGui.QLineEdit):
    def __init__(self, *args, **kwargs):
        super(LineEdit, self).__init__()
        self.setText('Some Text')
        self.textChanged.connect(self.printMessage)
        self.show()
    def printMessage(self):
        print 'Triggered!'

line=LineEdit()
line.clear()
sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:5)

您考虑过QLineEdit::textEdited了吗?以编程方式更改文本时,它不会发出信号。