gpt4 book ai didi

python - PyQt5 动态添加带循环的小部件

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:50 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的程序,该程序将显示电脑驱动器信息,例如分配的字母、以 GB 为单位的总内存等。由于每个人都有不同数量的驱动器,因此这必须是动态的。我使用 PyQt5 作为 GUI。我正在尝试显示驱动器的字母,但我似乎无法动态添加新的小部件,我总是只收到最后一个字母。这是现在的样子。首先我设置一个网格:

self.gridLayoutWidget_3 = QtWidgets.QWidget(self.centralwidget)
self.gridLayoutWidget_3.setGeometry(QtCore.QRect(10, 210, 741, 71))
self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3")
self.DrivesData = QtWidgets.QGridLayout(self.gridLayoutWidget_3)
self.DrivesData.setContentsMargins(0, 0, 0, 0)
self.DrivesData.setObjectName("DrivesData")

然后我尝试根据驱动器数量添加新的标签小部件:

for disk in disksInfo:
self.DRIVELETTERSPACE = QtWidgets.QLabel(self.gridLayoutWidget_3)
self.DRIVELETTERSPACE.setObjectName("DRIVELETTERSPACE")
self.DrivesData.addWidget(self.DRIVELETTERSPACE, 1, 0, 1, 1)

使用上面的代码,我显示的只是最后一个驱动器的字母(E:)。我想我明白我不应该将它们全部命名为 DRIVELETTERSPACE 但我怎样才能使名称也变得动态呢?另外,这是我在 pyqt5 中动态添加小部件的方式吗?或者我也应该使网格动态化?谢谢。

最佳答案

在您的代码中,您有两个错误,第一种情况是您将小部件添加到相同的位置,因此您必须创建一些方法才能改变索引;另一个错误是创建类的成员作为迭代器,为此您只需删除 self,例如:

key = 0 
for disk in disksInfo:
DRIVELETTERSPACE = QtWidgets.QLabel(self.gridLayoutWidget_3)
DRIVELETTERSPACE.setObjectName("DRIVELETTERSPACE")
DrivesData.addWidget(DRIVELETTERSPACE, key, 0)
key += 1

如果你想保存小部件,建议将它们保存在列表或字典中,因为稍后我们可以分别通过索引或键来获取它们。

关于python - PyQt5 动态添加带循环的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46874619/

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