如何在 python 中多次附加相同的元素?
How can I append the same element several times in python?
我正在创建一个包含 NUMBER 行编辑的 GUI。但是,为了获取其中写入的文本,我尝试为每次迭代制作一个 LineEdits 列表和 append/add 一个 LineEdit 元素到列表中。
然后我尝试将当前项目添加到布局中,并且在继续推送时能够将 NAME_LIST 更改为重命名 lineEdits。
我试着写出 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()
您的问题是因为这一行 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)
我正在创建一个包含 NUMBER 行编辑的 GUI。但是,为了获取其中写入的文本,我尝试为每次迭代制作一个 LineEdits 列表和 append/add 一个 LineEdit 元素到列表中。 然后我尝试将当前项目添加到布局中,并且在继续推送时能够将 NAME_LIST 更改为重命名 lineEdits。
我试着写出 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()
您的问题是因为这一行 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)