gpt4 book ai didi

python - 访问多个小部件

转载 作者:行者123 更新时间:2023-12-01 05:29:26 24 4
gpt4 key购买 nike

我使用 Qt Designer 制作了一个 GUI,我有 20 个或更多 lineEdit 小部件,我正在寻找访问所有这些小部件的正确方法,而不必访问每个小部件...我用伪代码中的示例进行解释:

这就是我不想要的:

lineEdit1.setText("Value = 1")
lineEdit2.setText("Value = 2")
lineEdit3.setText("Value = 3")
and so on, up to
lineEdit20.setText("Value = 20")

我正在寻找这样的东西:

for i in xrange(1,21):

lineEdit(i).setText("Value = whatever")

问题是,据我所知,当拖放小部件时,Qt Designer会自动在名称末尾添加一个数字...lineEdit1,lineEdit2,....所以之后我不知道如何在代码中访问所有这些。

最佳答案

首先,您不必接受 Qt Designer 中自动分配的名称。只需将 objectName 属性设置为最合适的值即可。

要迭代小部件组,可以使用多种 QObject 方法。

最强大的是findChildren它可以根据对象/小部件的类递归搜索它们:

for child in self.findChildren(QtGui.QLineEdit):
child.setValue(value)

还有他们的对象名称:

rgx = QtCore.QRegExp('lineEdit[0-9]+')
for child in self.findChildren(QtGui.QLineEdit, rgx):
child.setValue(value)

但更简单的技术是使用 Qt Designer 将所有小部件放入容器小部件(例如 QWidget、QFrame、QGroupBox 等)中,然后使用非递归 children循环它们的方法:

for index, child in enumerate(self.groupBox.children()):
child.setValue(value[index])

您可能还想考虑使用 QFormLayout ,它提供了一种更加结构化的做事方式。这在 Qt Designer 中可用:只需将 Form Layout 拖放到主窗体上,然后使用右键单击菜单中的 Add form layout row 向其中添加小部件.

关于python - 访问多个小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com