PyQt5将textChanged信号连接到QPlainTextEdit



所以我目前正在开发PyQt5 GUI,并且一如既往地需要将一些信号连接到方法调用。很自然,我已经查找了一个标准语法来实现这一点,并在整个项目中使用了它(到目前为止,它已经处理了20多种不同的信号(该语法为:self.widget.signal.connect(lambda x: whatever)

所以我最近开始连接QPlainTextEdit信号";text更改(("我的一个方法,它就是不起作用。我试着用一个简单的打印(文本(来替换我的方法,但这没有帮助。我的下一步是测试同一个小部件的另一个信号是否有效,它确实有效!所以现在我有了以下代码:

self.plainTextEdit.textChanged.connect(lambda x: print("testTextChanged"))
self.plainTextEdit.blockCountChanged.connect(lambda x: print("blockCountChanged"))

上部信号不会触发,但下部信号会触发。

我已经阅读了QPlainTextEdit的文档,textChanged((应该是此类的有效信号。我在项目中的几个QLineEdits上也使用了相同的信号。

有人怀疑为什么会发生这种行为吗?也许我确实犯了一个我无法识别的错误。(我试图通过简单地在GUI上的文本框中键入来触发信号,而每当我在编辑时按下回车键时,blockCountChanged就会被触发(

因此,musicamente的注释(对问题的注释(确实回答了它。它不起作用的原因是,因为QPlainTextEdit的textChanged信号没有任何参数(QLineEdit textChanged做f.e.(。这就是为什么lambda不应该有和参数的原因->正确的代码应该是:

self.plainTextEdit.textChanged.connect(lambda: print("testTextChanged"))

附言:如果有人搜索同样的东西,就回答这个问题。

最新更新