子索引超出范围,python元素树
问题描述:
当我尝试运行此代码时,我收到了以前从未收到的错误。子索引超出范围,python元素树
File "BasicEmail.py", line 96, in init_ui root[0][1].text IndexError: child index out of range Abort trap: 6
我的代码很简单,
class EmailBlast(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
user_file = 'user_info.xml'
tree = ET.parse(user_file)
root = tree.getroot()
root[0][1].text
self.emailLabel = QtWidgets.QLabel("Email:")
self.emailListLabel = QtWidgets.QLabel("")
self.sendButton = QtWidgets.QPushButton("Save")
self.settingsButton = QtWidgets.QPushButton("Settings")
h_box = QtWidgets.QHBoxLayout()
h_box.addStretch()
v_box = QtWidgets.QVBoxLayout()
v_box.addWidget(self.emailLabel)
v_box.addWidget(self.emailListLabel)
v_box.addWidget(self.sendButton)
v_box.addWidget(self.settingsButton)
v_box.addLayout(h_box)
self.setLayout(v_box)
self.setWindowTitle("Email Blast")
self.settingsButton.clicked.connect(lambda: self.settings(self.settingsButton, "Saved"))
self.show()
def settings(self, settingsButton, string):
self.ui = ConfigWindow()
self.hide()
print("Settings")
我能够获得标记和属性,没有值。 XML中的数据很好,应该有一个数组或列表,供我从中获取。
包括完整的XML文件:
<data>
<email>[email protected]</email>
<password>testpass</password>
<smtp>gmail</smtp>
<port>587</port>
</data>`
答
你的数据的XML模式直接给出了根里面的孩子, 所以不需要访问嵌套子:
root = tree.getroot()
root[0].text # returns the email
root[1].text # returns the password
root[2].text # returns the smtp
root[3].text # returns the port
您也可以使用名称查询以允许在您的模式中进行一些更改:
root.find('email').text
检查'tree.getroot()的结果',用'print(len(tree.getroot()))'和'print(len(tree.getroot()[0]))',很难说没有更多的代码有什么错误 – PRMoureu
你可以提供.xml – eyllanesc
@PRMoureu 我还会提供xml –
EwokHugz