Child Index out of Range, Python Element Tree

I am receiving an error I have never received before when trying to run this code.

File "BasicEmail.py", line 96, in init_ui root[0][1].text IndexError: child index out of range Abort trap: 6

My code is simple,

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")

I am able to get the tags and attributes, no values. The data in the XML is fine and there should be an array, or list, there for me to pull from.

Included full xml file:

<data>
<email></email>
<password>testpass</password>
<smtp>gmail</smtp>
<port>587</port>
</data>`
8

1 Answer

Your data xml pattern presents the children directly inside the root, so no need to access a nested child:

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

You can also use the name query to allow some change in your pattern :

root.find('email').text 
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller

David Miller

Executive Financial & Market Analyst

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.

Share this article
Twitter Facebook Pinterest