PyQt6思维导图和实例(登录帝国时代)

实例(登录帝国时代)

python 复制代码
import sys
# 导入PyQt6库中的相关模块
from PyQt6.QtGui import QIcon, QPixmap, QMovie  # 用于处理图标、图片和动画
from PyQt6.QtCore import Qt  # 用于设置对齐方式等
from PyQt6.QtWidgets import (
    QApplication,  # 用于管理Qt应用程序的执行
    QWidget,  # 窗口类
    QPushButton,  # 按钮类
    QLabel,  # 标签类
    QLineEdit,  # 输入框类
    QVBoxLayout,  # 垂直布局类
    QHBoxLayout,  # 水平布局类
    QMessageBox,  # 消息框类
)

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        # 设置窗口大小、标题和图标
        self.resize(1366, 768)  # 设置窗口大小为1366x768
        self.setWindowTitle("帝国时代 - 登录")  # 设置窗口标题
        # 设置窗口图标,图标路径要保证正确
        self.setWindowIcon(QIcon("G:\\longz\\人工智能作业\\pictrue\\ReturnRome-AoEIcon.png"))

        # 创建垂直布局,用来垂直排列窗口中的组件
        layout = QVBoxLayout()

        # 创建标题标签并设置样式
        title_label = QLabel("欢迎来到帝国时代")  # 创建一个标签显示标题
        title_label.setStyleSheet("font-size: 100px; font-weight: bold; color: white;")  # 设置字体大小、粗体和字体颜色
        title_label.setAlignment(Qt.AlignmentFlag.AlignCenter)  # 设置标题居中对齐
        layout.addWidget(title_label)  # 将标题标签添加到垂直布局

        # 创建动图标签并显示动图
        age_gif = QLabel(self)  # 创建一个标签用来显示GIF动画
        age_gif.resize(1366, 768)  # 设置标签大小
        age_gif.setStyleSheet("background-color:green")  # 设置背景色为绿色,便于调试
        # 加载并显示GIF动画
        mv = QMovie("G:\\longz\\人工智能作业\\2024年12月2日\\New_Settlement_Building_Set.gif")
        age_gif.setMovie(mv)  # 设置动图为标签的内容
        mv.start()  # 启动动图
        age_gif.setScaledContents(True)  # 设置动图自适应标签大小

        # 创建水平布局,用于放置用户名和密码输入框
        input_layout = QHBoxLayout()

        # 创建用户名输入框
        self.username_input = QLineEdit()  # 创建一个输入框
        self.username_input.setPlaceholderText("请输入用户名")  # 设置占位文本
        input_layout.addWidget(self.username_input)  # 将用户名输入框添加到水平布局中

        # 创建密码输入框
        self.password_input = QLineEdit()  # 创建一个输入框
        self.password_input.setPlaceholderText("请输入密码")  # 设置占位文本
        self.password_input.setEchoMode(QLineEdit.EchoMode.Password)  # 设置输入内容为密码,隐藏输入的字符
        input_layout.addWidget(self.password_input)  # 将密码输入框添加到水平布局中

        layout.addLayout(input_layout)  # 将用户名和密码的水平布局添加到垂直布局中

        # 创建性别选择按钮的水平布局
        gender_layout = QHBoxLayout()
        male_button = QPushButton("男")  # 创建男性按钮
        male_button.setIcon(QIcon("G:\\longz\\人工智能作业\\pictrue\\Returnofrome_male_villager_icon.png"))  # 设置图标
        female_button = QPushButton("女")  # 创建女性按钮
        female_button.setIcon(QIcon("G:\\longz\\人工智能作业\\pictrue\\Returnofrome_female_villager_icon.png"))  # 设置图标
        gender_layout.addWidget(male_button)  # 将男性按钮添加到布局中
        gender_layout.addWidget(female_button)  # 将女性按钮添加到布局中
        layout.addLayout(gender_layout)  # 将性别选择的水平布局添加到垂直布局中

        # 创建登录按钮
        login_button = QPushButton("登录")  # 创建登录按钮
        login_button.setIcon(QIcon("G:\\longz\\人工智能作业\\pictrue\\Clubman.webp"))  # 设置登录按钮图标
        login_button.setStyleSheet("background-color: white; color: black; font-size: 18px;")  # 设置按钮的样式
        login_button.clicked.connect(self.handle_login)  # 连接点击事件,触发登录函数
        layout.addWidget(login_button)  # 将登录按钮添加到布局中

        # 设置窗口布局为垂直布局
        self.setLayout(layout)

    def handle_login(self):
        # 处理登录事件
        username = self.username_input.text()  # 获取用户名输入框的文本
        password = self.password_input.text()  # 获取密码输入框的文本

        # 判断用户名和密码是否正确
        if username == "龙政" and password == "Lz980806":
            # 如果用户名和密码正确,显示登录成功消息
            QMessageBox.information(self, "登录成功", "欢迎来到帝国时代!")
        else:
            # 如果用户名或密码错误,显示登录失败消息
            QMessageBox.warning(self, "登录失败", "用户名或密码错误,请重试!")

if __name__ == "__main__":
    # 创建应用程序对象
    app = QApplication(sys.argv)
    # 创建MyWidget窗口对象
    myWidget = MyWidget()
    # 显示窗口
    myWidget.show()
    # 启动应用程序
    sys.exit(app.exec())
    

演示结果

相关推荐
世人万千丶6 小时前
鸿蒙日志体系高级应用:HiLog分级输出/隐私脱敏/远程日志采集/线上问题精准溯源方案
学习·harmonyos·鸿蒙
ctlover10 小时前
Python学习第 5 日
学习
六点_dn10 小时前
RabbitMQ学习笔记-部署和使用
笔记·学习·rabbitmq
MartinYeung513 小时前
[论文学习]OSReward:为跨平台计算机使用奖励模型建立标准化评估
人工智能·学习
dong13269713 小时前
Agent Skills学习笔记
笔记·学习
for_ever_love__13 小时前
iOS:网络请求再学习
网络·学习·ios·objective-c
世人万千丶14 小时前
鸿蒙Crash高级捕获与异常监控:全局异常兜底/崩溃栈解析/符号表还原/智能聚类/闭环修复
学习·机器学习·华为·数据挖掘·harmonyos·鸿蒙·聚类
Jul1en_14 小时前
【Claude Code Compact】源码级别的学习上下文压缩
java·前端·学习·github·ai编程
fengci.14 小时前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
m4Rk_15 小时前
【论文阅读】Agent 记忆机制(28):MEM1——将记忆压缩融入推理,实现近似恒定上下文的长程智能体
论文阅读·人工智能·学习·开源·github