回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试使用pyqt创建一个登录系统,我有多个模块,下面是我的设置模块中的部分代码:</p>
<pre><code>class User(object):
def __init__(self, fname, lname, dob, gender):
self.firstname = fname
self.lastname = lname
self._dob = dob
self.gender = gender
self.type = 'General'
self._username = ''
self._hashkey = ''
def Report(self):
print("Full Name: {0} {1}\nDate of Birth: {2}\nGender: {3}\nAccess Level: {4}".format(self.firstname,self.lastname, self._dob, self.gender, self.type))
print(self._username)
def Genusername(self):
self._username = str(str(self._dob)[:2] + self.firstname[:2] + self.lastname[:2])
saveUsers(users)
def Verify(self, Username, Password):
if Password == self._hashkey:
return True
else:
return False
def verifyUser(Username, Password):
for user in users:
if Username == user._username:
if user.Verify(Username, Password):
print('Login Successful')
else:
print('Wrong Password')
else:
print('User does not exist')
if __name__ == '__main__':
users = []
loadUsers(users)
</code></pre>
<p>这是我的pyqt gui模块,我正试图测试它:</p>
<pre><code>from PyQt4 import QtGui, QtCore
import Settings
class Window(QtGui.QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl1 = QtGui.QLabel('Username')
self.lbl2 = QtGui.QLabel('Password')
self.username = QtGui.QLineEdit()
self.password = QtGui.QLineEdit()
self.okButton = QtGui.QPushButton("OK")
self.okButton.clicked.connect(self.Login)
self.cancelButton = QtGui.QPushButton("Cancel")
grid = QtGui.QGridLayout()
grid.setSpacing(10)
grid.addWidget(self.lbl1, 1, 0)
grid.addWidget(self.username, 1, 1)
grid.addWidget(self.lbl2, 2, 0)
grid.addWidget(self.password, 2, 1)
grid.addWidget(self.okButton, 3, 1)
grid.addWidget(self.cancelButton, 3, 0)
self.setLayout(grid)
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Login')
self.show()
def Login(self):
Settings.verifyUser(self.username.text(),self.password.text())
def main():
app = QtGui.QApplication(sys.argv)
Loginwindow = Window()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
</code></pre>
<p>我试图从pyqt编辑小部件获取用户名和密码,并用用户名和密码与用户进行验证,用户都是存储在列表中的类,并作为加载的pickle文件转储,我的代码的verify函数不断出现名称错误,我不知道如何将列表放入函数,我尝试了其他方法,但不起作用,如果有其他方法来构造我的代码或使用pyqt请让我知道,我是新的pyqt和当谈到使用模块</p>
<pre><code>Traceback (most recent call last):
File "C:\Users\ProgramA\LoginGUI.py", line 39, in Login
Settings.verifyUser(self.username.text(),self.password.text())
File "C:\Users\ProgramA\Settings.py", line 78, in verifyUser
for user in users:
NameError: name 'users' is not defined
</code></pre>