Trae+DeepSeek学习Python开发MVC框架程序笔记(三):以pyQT5实现系统登录
修改view.py程序,实现用pyQT5显示登录页面,实现用户在图形界面输入用户名和密码的需求,登录成功和失败的提醒均在窗口中以文字的方式显示。根据DeepSeek回复,结合个人调试,并将错误提交DeepSeek,最终实现PyQt5图形界面登录功能。
·
通过Trae向DeepSeek发问:
修改view.py程序,实现用pyQT5显示登录页面,实现用户在图形界面输入用户名和密码的需求,登录成功和失败的提醒均在窗口中以文字的方式显示。
根据DeepSeek回复,结合个人调试,并将错误提交DeepSeek,最终实现PyQt5图形界面登录功能。
以下是完整的代码实现:
#model.py
# 模型 (Model)
class UserModel:
def __init__(self):
# 模拟数据库中的用户表
self.users = {
'admin': '123456',
'user1': 'password1',
'user2': 'password2'
}
def authenticate(self, username, password):
"""验证用户凭据"""
return username in self.users and self.users[username] == password
# view.py
#
from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit,
QPushButton, QVBoxLayout, QMessageBox)
from PyQt5.QtCore import Qt
class LoginView(QWidget):
def __init__(self, controller=None):
super().__init__()
self.controller = controller
self.init_ui()
def init_ui(self):
self.setWindowTitle('系统登录')
self.resize(300, 200)
layout = QVBoxLayout()
# 用户名输入
self.lbl_user = QLabel('用户名:')
self.txt_user = QLineEdit()
layout.addWidget(self.lbl_user)
layout.addWidget(self.txt_user)
# 密码输入
self.lbl_pass = QLabel('密码:')
self.txt_pass = QLineEdit()
self.txt_pass.setEchoMode(QLineEdit.Password)
layout.addWidget(self.lbl_pass)
layout.addWidget(self.txt_pass)
# 登录按钮
self.btn_login = QPushButton('登录')
self.btn_login.clicked.connect(self.on_login)
layout.addWidget(self.btn_login)
# 状态显示
self.lbl_status = QLabel()
self.lbl_status.setAlignment(Qt.AlignCenter)
layout.addWidget(self.lbl_status)
self.setLayout(layout)
def on_login(self):
username = self.txt_user.text()
password = self.txt_pass.text()
if self.controller:
self.controller.handle_login(username, password)
def show_success(self, username):
self.lbl_status.setText(f"欢迎, {username}!")
self.lbl_status.setStyleSheet("color: green")
def show_failure(self):
self.lbl_status.setText("用户名或密码错误!")
self.lbl_status.setStyleSheet("color: red")
def show(self):
super().show()
self.txt_user.setFocus()
# controller.py
# 控制器 (Controller)
class LoginController:
def __init__(self, model, view):
self.model = model
self.view = view
self.view.controller = self # 设置view的controller引用
def run(self):
self.view.show() # 直接调用view的show方法
def handle_login(self, username, password):
if self.model.authenticate(username, password):
self.view.show_success(username)
else:
self.view.show_failure()
# main.py
# 主程序入口
import sys
from PyQt5.QtWidgets import QApplication
from model import UserModel
from view import LoginView
from controller import LoginController
def main():
app = QApplication(sys.argv) # 创建QApplication实例
# 初始化MVC组件
model = UserModel()
view = LoginView()
controller = LoginController(model, view)
# 启动应用
controller.run()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
以上代码运行正常。
通过Trae请DeepSeek帮我检查以上代码是否符合MVC框架,检查结果为:
总结 :当前mvctest2项目完全符合MVC架构设计原则,各层职责明确,耦合度低。建议继续保持这种架构方式。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)