textChanged()更改qtextedit文本

时间:2016-04-23 12:47:57

标签: qt pyqt4

我正在创建一个带语法高亮的qtextedit。我喜欢的方法是在textChanged()事件发生时用彩色文本替换qtextedit文本。问题是当我在textChanged()函数中替换文本时,会发生另一个textChanged():(,请帮忙!

这是我的代码:

def teditSQL_color_text(self):
    text = self.teditSQL.toPlainText()
    text = text.replace('select', '<font color=blue>select</font>')
    self.teditSQL.setText(text)

1 个答案:

答案 0 :(得分:0)

也许还有其他解决方案,但您可以使用blockSignals方法阻止对象发出信号。所以请将它包裹在setText这样的电话中。

def teditSQL_color_text(self):
    text = self.teditSQL.toPlainText()
    text = text.replace('select', '<font color=blue>select</font>')
    wasBlocked = self.teditSQL.blockSignals(True)
    self.teditSQL.setText(text)
    self.teditSQL.blockSignals(wasBlocked)