如何在python中多次附加相同的元素?

2024-10-02 10:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个包含大量行编辑的GUI。但是,为了得到其中所写的文本,我尝试创建一个LineEdits列表,并为每个迭代向列表中添加LineEdit元素。 然后我尝试将当前项添加到布局中,当按“继续”时,可以将名称列表更改为重命名行编辑

我试着写出self.lineEditRename的长度,似乎同一项不能附加几次。是这样吗?我该怎么处理? 我运行文件时出现此错误

layout.addWidget(self.lineEditRename[i],2,i)
IndexError: list index out of range

请帮忙:)

# NAME LIST
self.NAME_LIST = []
for i in range(0, NUMBER):
    self.NAME_LIST.append("NUMBER: "+ str(i))

for i in range(0,NUMBER+1):
            print(i)
            if (i==0):
                layout.addWidget(QtWidgets.QLabel("Rename: "),2,i))
            else:
                layout.addWidget(QtWidgets.QLabel(self.NAME_LIST[i-1]),0,i)
                self.lineEditRename = [QtWidgets.QLineEdit(self), QtWidgets.QLineEdit(self)]
                self.lineEditRename.append(QtWidgets.QLineEdit(self))
                layout.addWidget(self.lineEditRename[i-1],2,i)

self.QContinueButton = QtWidgets.QPushButton("Continue")
self.QContinueButton.clicked.connect(lambda: self.windowtwo(NUMBER))
layout.addWidget(self.QContinueButton,10,2)


def windowtwo(self, NUMBER):
        for i in range(1,NUMBER+1):
            print(self.lineEditRename[i].text())
            self.NAME_LIST[i-1]=self.lineEditRename[i].text()
        self.switch_window.emit()

Tags: nameinself编辑number列表forrange
1条回答
网友
1楼 · 发布于 2024-10-02 10:21:37

你的问题是因为这行self.lineEditRename = [QtWidgets.QLineEdit(self), QtWidgets.QLineEdit(self)]self.lineEditRename的长度总是3,所以只要i变为3,就会得到一个IndexError: list index out of range

你是不是想这样做:

self.lineEditRename = [QtWidgets.QLineEdit(self), QtWidgets.QLineEdit(self)]
for i in range(0,NUMBER+1):
    print(i)
    if (i==0):
        layout.addWidget(QtWidgets.QLabel("Rename: "),2,i))
    else:
        layout.addWidget(QtWidgets.QLabel(self.NAME_LIST[i-1]),0,i)
        self.lineEditRename.append(QtWidgets.QLineEdit(self))
        layout.addWidget(self.lineEditRename[i],2,i)

相关问题 更多 >

    热门问题