PyQt - 列表索引必须是整数而不是 str(字典)


    def SaveUsers( self ):
    Forename = str(self.ui.ForenameEdit.text())
    Surname = str(self.ui.SurnameEdit.text())
    Username = str(self.ui.UsernameEdit.text())
    Password = str(self.ui.PasswordEdit.text())
    PasswordConfirm = str(self.ui.PasswordEdit2.text())
    if self.ui.SecLvlAdminRadio.isChecked() == True:
        SecurityLvl = 'Admin'
    elif self.ui.SecLvlBasicRadio.isChecked() == True:
        SecurityLvl = 'Basic'
    else:
        QtGui.QMessageBox.about(self, 'Error', 'Please choose a security level.')
    Users[Username] = {'Username': Username, 'Password': Password, 'Forename': Forename, 'Surname': Surname, 'Security Level': SecurityLvl}
    print(Users[Username])
    SaveToFile('Users.dat', Users)
    CreateUser.close()
产生错误:

类型错误:列表索引必须是整数,而不是以用户[用户名] = {'用户名:...

SaveToFile() 是从另一个模块创建的子程序

请帮助我解决这个问题,或者,如果有更好的方法,请提出建议。

谢谢

Users是一个

列表。 Users[n]正在尝试查找该列表的nth元素。因此,n必须是整数。您尝试使用字符串,这没有意义。

相反,您需要确保列表索引是一个整数,例如 ID 号:

UserID = 1
Users[UserID] = {'Username': Username, 'Password': Password, 'Forename': Forename, 'Surname': Surname, 'Security Level': SecurityLvl}

或者,您可以将Users创建为字典,然后可以根据键分配字典值,该键可以是字符串,就像您尝试的那样:

Users = {}
Users[Username] = {'Username': Username, 'Password': Password, 'Forename': Forename, 'Surname': Surname, 'Security Level': SecurityLvl}

最新更新