QLineEdit 对象的 PyQt 集合
Posted
技术标签:
【中文标题】QLineEdit 对象的 PyQt 集合【英文标题】:PyQt Collection of QLineEdit objects 【发布时间】:2011-11-17 22:12:38 【问题描述】:PyQt 中有什么方法可以获取所有 QLineEdit
对象的集合吗?
我正在尝试添加一个重置按钮,该按钮将清除表单上所有 QLineEdit
中的所有文本,因此我正在寻找一种方法来循环遍历所有 QLineEdit
对象,而不是在我的重置函数中将它们全部列出这将连接到重置按钮。
谢谢。
【问题讨论】:
为什么不首先将它们存储在dict
或list
中?
我可能会,但这最终会产生列出所有这些的工作和将它们全部列出的脆弱性(然后,如果我重命名、删除或添加,我还有一个地方可以更新一个字段)。以编程方式获取列表应该会生成更短、更易于维护的代码。
实际上我是在谈论使用字典而不是变量,而不是除了变量之外的字典。更像self.edits["some_name"] = QtGui.QLineEdit()
而不是self.some_name = QtGui.QLineEdit()
。如果有的话,这应该在逻辑上引入很少的变化。
啊,这更有意义,如果我手动编写所有的 GUI,这可能是一个好方法,但我使用 QT Designer 来完成大部分的 GUI 设计和然后做一些小的微调并手动放入实际的程序逻辑。
【参考方案1】:
如果所有行编辑都有父级,您可以使用:
for child in parent.findChildren(QtGui.QLineEdit):
child.clear()
或者可能:
for widget in qApp.allWidgets():
if isinstance(widget, QtGui.QLineEdit):
widget.clear()
【讨论】:
第二个正是我需要的。谢谢。 我在将近 2 年后问这个问题,但是如果我只想清除一个特定窗口的小部件怎么办?这将清除 所有 行编辑,对吗?哪一个是行编辑的父级?QWindow
子类?抱歉,我才刚刚开始,我有点迷路了。
@SamiaRuponti 这实际上取决于您的应用程序的结构。您应该提出一个新问题并显示您的代码。以上是关于QLineEdit 对象的 PyQt 集合的主要内容,如果未能解决你的问题,请参考以下文章
如何通过按 Escape 键重置 QLineEdit 文本?
python PyQt4中如何获得QTextEdit的内容获得QLineEdit的内容有QLineEdit.text(),那QTextEdit呢?
PyQt4 - QLineEdit() 和 QCheckbox()