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())
    

演示结果

相关推荐
comyccccc2 小时前
STM32F407VET6核心板的部分电路绘制学习笔记
笔记·stm32·学习
叼烟扛炮2 小时前
Linux 学习笔记(三十六):并发进阶——读写锁 vs 自旋锁,到底怎么选?
linux·运维·服务器·笔记·学习
是隼人2 小时前
buuctf-pwn [极客大挑战 2019]Not Bad(orw+jmp)题解(学习过程持续更新)
学习·安全·pwn入门·ctf入门
lazy H3 小时前
【计算机网络】第 12 篇:IPv6 详解——地址格式、地址类型与双栈网络
网络·经验分享·后端·学习·计算机网络·408
(●—●)橘子……3 小时前
力扣 第525场周赛 练习理解
数据结构·python·学习·算法·leetcode
一只QAQ3 小时前
python语法学习
linux·python·学习
東隅已逝,桑榆非晚3 小时前
map和set的使用
数据结构·c++·笔记·学习
dadaobusi3 小时前
error:field ifru_addr has incomplete type sockaddr
学习
Z21-X4 小时前
云原生运维笔记:硬核拆解OpenStack计算与存储——从主机聚合到Cinder挂载全流程
运维·笔记·学习·云原生·openstack
坤坤子吖4 小时前
Linux网络编程基础:从 MAC 到 IP,理解网络数据是怎么传输的
linux·网络·笔记·学习