首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyQt5将textChanged信号连接到QPlainTextEdit

PyQt5将textChanged信号连接到QPlainTextEdit
EN

Stack Overflow用户
提问于 2020-12-04 13:26:47
回答 1查看 1.2K关注 0票数 0

因此,我目前正在开发一个PyQt5图形用户界面,并且一如既往地需要将一些信号连接到方法调用。当然,我已经查找了一个标准语法,并在整个项目中使用了它(到目前为止,它已经处理了20多个不同的信号),语法是:self.widget.signal.connect(lambda x: whatever)

因此,我最近到达了将QPlainTextEdit信号"textChanged()“连接到我的方法之一的地步,但它没有起作用。我尝试用一个简单的打印(文本)代替我的方法,但这并没有帮助。我的下一个步骤是测试同一个小部件的另一个信号是否有效,它成功了!现在我有了以下代码:

代码语言:javascript
运行
复制
self.plainTextEdit.textChanged.connect(lambda x: print("testTextChanged"))
self.plainTextEdit.blockCountChanged.connect(lambda x: print("blockCountChanged"))

上面的信号不会触发,但下面的信号会触发。

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

有没有人怀疑这种行为发生的原因?也许我确实犯了一个我认不出的错误。(我试图通过在GUI上输入textBox来触发信号,而每当我在编辑时按enter,就会触发blockCountChanged )

EN

回答 1

Stack Overflow用户

发布于 2020-12-04 13:50:45

因此,musicamente的评论确实回答了这个问题。它不能工作的原因是,因为QPlainTextEdit的QPlainTextEdit信号没有任何参数(QLineEdit textChanged做f.e.)。这就是为什么lambda不应该包含和参数->,正确的代码应该是:

代码语言:javascript
运行
复制
self.plainTextEdit.textChanged.connect(lambda: print("testTextChanged"))

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65144408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档