功能
pyhton可视化的登陆界面,要求:先选择身份是manager还是clerk,在进行用户名和密码的输入,登陆成功后提示并跳转另一窗口显示file.txt文件内容
manager : (admin, 123456)
clerk : (user, 123456)
过程
1. 设置主窗口大小和标题
self.setGeometry(500, 200, 600, 400)
self.setWindowTitle('Login')
2. 创建身份选择控件
self.identity_label = QLabel('Identity: ')
self.identity_input = QComboBox()
self.identity_input.addItem('manager')
self.identity_input.addItem('clerk')
3. 创建用户名和密码输入控件
self.user_label = QLabel('Username: ')
self.user_input = QLineEdit()
self.pass_label = QLabel('Password: ')
self.pass_input = QLineEdit()
self.pass_input.setEchoMode(QLineEdit.Password)
函数setEchoMode()
功能:定义输入模式
示例:
self.pass_label = QLabel('Password: ')
self.pass_input = QLineEdit()
self.pass_input.setEchoMode(QLineEdit.Password) # 设置密码输入框的显示模式为密码模式
这段代码是用来设置密码输入框的显示模式的,它将密码输入框的显示模式设置为密码模式,这意味着输入的字符将被替换为密码符号(例如星号 *),以保护用户的密码安全。
- setEchoMode() 方法的参数的三个模式
(1) QLineEdit.Normal 表示正常模式,输入的字符会直接显示在输入框中;
(2) QLineEdit.Password 表示密码模式,输入的字符会被替换为密码符号;
(3) QLineEdit.NoEcho 表示隐私模式,输入的字符不会显示在输入框中,用于输入一些敏感信息或密码确认等场合。
4. 创建登陆的按钮
self.signin = QPushButton('Sign In')
self.signin.clicked.connect(self.check_login)
# 实现登陆功能
def check_login(self):
# 获取身份、用户名和密码
identity = self.identity_input.currentText()
username = self.user_input.text()
password = self.pass_input.text()
# 判断身份、用户名和密码是否正确
if identity == 'manager' and username == 'admin' and password == '123456':
# 登录成功
QMessageBox.information(self, 'Success', 'Login Successful')
# 显示文件信息窗口
self.hide()
self.file_window = FileWindow()
self.file_window.show()
elif identity == 'clerk' and username == 'user' and password == '123456':
# 登录成功
QMessageBox.information(self, 'Success', 'Login Successful')
# 显示文件信息窗口
self.hide()
self.file_window = FileWindow()
self.file_window.show()
else:
# 登录失败
QMessageBox.warning(self, 'Error', 'Invalid username or password')
# 定义文件信息窗口类
class FileWindow(QWidget):
def __init__(self):
super().__init__()
# 读取文件内容
with open('file.txt', 'r') as f:
file_content = f.read()
# 创建显示文件内容的控件
self.file_label = QLabel('File info:')
self.file_info = QTextEdit()
self.file_info.setText(file_content)
# 创建返回按钮
self.logout = QPushButton('Log out')
self.logout.clicked.connect(self.return_to_login)
# 创建布局和添加控件
vbox = QVBoxLayout()
vbox.addWidget(self.file_label)
vbox.addWidget(self.file_info)
vbox.addWidget(self.logout)
self.setLayout(vbox)
# 返回登录窗口
def return_to_login(self):
self.hide()
self.login_window = LoginWindow()
self.login_window.show()
5. 创建布局和添加控件
vbox = QVBoxLayout()
hbox1 = QHBoxLayout()
hbox1.addWidget(self.identity_label)
hbox1.addWidget(self.identity_input)
vbox.addLayout(hbox1)
hbox2 = QHBoxLayout()
hbox2.addWidget(self.user_label)
hbox2.addWidget(self.user_input)
vbox.addLayout(hbox2)
hbox3 = QHBoxLayout()
hbox3.addWidget(self.pass_label)
hbox3.addWidget(self.pass_input)
vbox.addLayout(hbox3)
vbox.addWidget(self.signin)
self.setLayout(vbox)
6. 定义主函数
if __name__ == '__main__':
app = QApplication(sys.argv)
login = LoginWindow()
login.show()
sys.exit(app.exec_())
效果