因此,我目前正在开发一个PyQt5图形用户界面,并且一如既往地需要将一些信号连接到方法调用。当然,我已经查找了一个标准语法,并在整个项目中使用了它(到目前为止,它已经处理了20多个不同的信号),语法是:self.widget.signal.connect(lambda x: whatever)
因此,我最近到达了将QPlainTextEdit信号"textChanged()“连接到我的方法之一的地步,但它没有起作用。我尝试用一个简单的打印(文本)代替我的方法,但这并没有帮助。我的下一个步骤是测试同一个小部件的另一个信号是否有效,它成功了!现在我有了以下代码:
self.plainTextEdit.textChanged.connect(lambda x: print("testTextChanged"))
self.plainTextEdit.blockCountChanged.connect(lambda x: print("blockCountChanged"))
上面的信号不会触发,但下面的信号会触发。
我已经阅读了QPlainTextEdit的文档,textChanged()应该是该类的有效信号。我还在我的项目中的几个QLineEdits上使用了相同的信号。
有没有人怀疑这种行为发生的原因?也许我确实犯了一个我认不出的错误。(我试图通过在GUI上输入textBox来触发信号,而每当我在编辑时按enter,就会触发blockCountChanged )
发布于 2020-12-04 13:50:45
因此,musicamente的评论确实回答了这个问题。它不能工作的原因是,因为QPlainTextEdit的QPlainTextEdit信号没有任何参数(QLineEdit textChanged做f.e.)。这就是为什么lambda不应该包含和参数->,正确的代码应该是:
self.plainTextEdit.textChanged.connect(lambda: print("testTextChanged"))
PS:如果有人在搜索同样的东西,就回答这个问题。
https://stackoverflow.com/questions/65144408
复制相似问题