编程实现登录界面,要求如下: (1)登录和取消按钮均添加事件处理; (2)三次登录失败将弹出锁定账号30分钟的提示。
时间: 2024-01-06 16:07:00 浏览: 47
好的,编写登录界面的代码如下,使用 Python 3 和 PyQt5 库实现:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QMessageBox
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt
import sys
class Login(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 设置窗口标题和大小
self.setWindowTitle('登录')
self.resize(300, 200)
# 创建标签和文本框
label_username = QLabel('用户名:', self)
label_username.move(50, 30)
self.edit_username = QLineEdit(self)
self.edit_username.move(110, 30)
self.edit_username.setFont(QFont('Arial', 12))
label_password = QLabel('密码:', self)
label_password.move(50, 70)
self.edit_password = QLineEdit(self)
self.edit_password.move(110, 70)
self.edit_password.setEchoMode(QLineEdit.Password)
self.edit_password.setFont(QFont('Arial', 12))
# 创建登录和取消按钮
btn_login = QPushButton('登录', self)
btn_login.move(50, 120)
btn_login.clicked.connect(self.login)
btn_cancel = QPushButton('取消', self)
btn_cancel.move(160, 120)
btn_cancel.clicked.connect(self.cancel)
# 初始化登录次数和锁定状态
self.login_count = 0
self.is_locked = False
def login(self):
if self.is_locked:
QMessageBox.warning(self, '提示', '账号已锁定,请稍后再试!')
return
username = self.edit_username.text()
password = self.edit_password.text()
if username == 'admin' and password == '123456':
QMessageBox.information(self, '提示', '登录成功!')
self.close()
else:
self.login_count += 1
if self.login_count == 3:
self.is_locked = True
QMessageBox.warning(self, '提示', '登录失败次数已达上限,账号将锁定30分钟!')
else:
QMessageBox.warning(self, '提示', '用户名或密码错误!')
def cancel(self):
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
login = Login()
login.show()
sys.exit(app.exec_())
```
在上面的代码中,我们创建了一个 `Login` 类继承自 `QWidget`,并实现了 `init_ui`、`login` 和 `cancel` 三个方法。其中:
- `init_ui` 方法用于初始化界面,包括创建用户名和密码的标签和文本框,以及登录和取消按钮,并初始化登录次数和锁定状态。
- `login` 方法用于处理登录按钮的点击事件,判断用户名和密码是否正确,如果正确则弹出登录成功的提示框并关闭窗口,否则登录次数加1,如果登录次数达到3次则将账号锁定30分钟,否则弹出用户名或密码错误的提示框。
- `cancel` 方法用于处理取消按钮的点击事件,直接关闭窗口。
最后,在 `main` 函数中创建 `QApplication` 对象和 `Login` 对象,然后调用 `show` 方法显示窗口,最后进入消息循环中等待用户交互。