PyQt6 中信号和槽及其他控件思维导图和应用

 原代码:

# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file '帝国时代登录界面.ui'
##
## Created by: Qt User Interface Compiler version 6.8.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QFrame, QLabel, QLineEdit,
    QMainWindow, QPushButton, QSizePolicy, QStatusBar,
    QWidget)
import res_rc

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(1000, 582)
        MainWindow.setMinimumSize(QSize(0, 0))
        MainWindow.setMaximumSize(QSize(1000, 582))
        MainWindow.setStyleSheet(u"QMainWindow {\n"
"    border-radius: 20px; \n"
"    background-color: rgba(0, 0, 0, 0.8); \n"
"}")
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.centralwidget.setMinimumSize(QSize(1000, 562))
        self.centralwidget.setMaximumSize(QSize(1000, 562))
        self.centralwidget.setStyleSheet(u"Lay Out in a Vertical Layout\n"
"border-image: url(:/age_.gif);")
        self.frame = QFrame(self.centralwidget)
        self.frame.setObjectName(u"frame")
        self.frame.setGeometry(QRect(0, 0, 1001, 571))
        self.frame.setStyleSheet(u"QFrame {\n"
"    border-radius: 20px;\n"
"    background-color: rgba(0, 0, 0, 0);\n"
"}")
        self.password = QLineEdit(self.frame)
        self.password.setObjectName(u"password")
        self.password.setGeometry(QRect(350, 380, 321, 31))
        self.password.setStyleSheet(u"            QLineEdit {\n"
"                background-color: rgba(255, 255, 255, 0.3);  /* \u534a\u900f\u660e */\n"
"                border-width: 0 0 1px 0; /* \u5206\u522b\u8bbe\u7f6e\u4e0a\u3001\u53f3\u3001\u4e0b\u3001\u5de6\u8fb9\u6846\u7684\u5bbd\u5ea6\uff0c\u8fd9\u91cc\u4e0b\u8fb9\u6846\u4e3a1px\uff0c\u5176\u4ed6\u4e3a0 */\n"
"                border-style: none none solid none; /* \u5206\u522b\u8bbe\u7f6e\u4e0a\u3001\u53f3\u3001\u4e0b\u3001\u5de6\u8fb9\u6846\u7684\u6837\u5f0f\uff0c\u8fd9\u91cc\u4e0b\u8fb9\u6846\u4e3a\u5b9e\u7ebf\uff0c\u5176\u4ed6\u4e3a\u65e0\u6837\u5f0f */\n"
"                border-color: transparent transparent white transparent; /* \u5206\u522b\u8bbe\u7f6e\u4e0a\u3001\u53f3\u3001\u4e0b\u3001\u5de6\u8fb9\u6846\u7684\u989c\u8272\uff0c\u8fd9\u91cc\u4e0b\u8fb9\u6846\u4e3a\u767d\u8272\uff0c\u5176\u4ed6\u4e3a\u900f\u660e\u8272 */\n"
"                color: white;  /* \u5b57\u4f53\u989c\u8272\u767d\u8272 */\n"
"                font-size: 15px;  /* \u5b57\u4f53\u5927\u5c0f */\n"
"           "
                        "     padding: 5px;\n"
"            }")
        self.title_label = QLabel(self.frame)
        self.title_label.setObjectName(u"title_label")
        self.title_label.setGeometry(QRect(60, 90, 881, 151))
        self.title_label.setStyleSheet(u"QLabel {\n"
"    font-size: 100px;\n"
"    font-weight: bold;\n"
"    color: white;\n"
"}")
        self.title_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.age_gif = QLabel(self.frame)
        self.age_gif.setObjectName(u"age_gif")
        self.age_gif.setGeometry(QRect(0, 0, 1000, 562))
        self.age_gif.setMinimumSize(QSize(1000, 562))
        self.age_gif.setMaximumSize(QSize(1000, 562))
        self.age_gif.setStyleSheet(u"border-radius: 20px;\n"
"background-color: rgba(0, 0, 0, 0.8);")
        self.male_Button = QPushButton(self.frame)
        self.male_Button.setObjectName(u"male_Button")
        self.male_Button.setGeometry(QRect(530, 430, 51, 51))
        self.male_Button.setStyleSheet(u"QPushButton {\n"
"	border-image: url(:/Returnofrome_male_villager_icon.png);\n"
"    border-repeat: no-repeat; \n"
"    border-position: center; \n"
"	border-size: 1px;\n"
"    border-radius: 15px;\n"
"    border: none; \n"
"    padding: 0px; \n"
"}")
        self.login_button = QPushButton(self.frame)
        self.login_button.setObjectName(u"login_button")
        self.login_button.setGeometry(QRect(350, 490, 151, 41))
        self.login_button.setStyleSheet(u"            QPushButton {\n"
"                background: qlineargradient(\n"
"                    spread: pad, \n"
"                    x1: 0, y1: 0, x2: 1, y2: 0,\n"
"                    stop: 0 rgba(0, 0, 255, 0.8), stop: 1 rgba(255, 0, 0, 0.8)\n"
"                );\n"
"                color: white;\n"
"                font-size: 18px;\n"
"                border: 0px solid white;\n"
"                border-radius: 10px;\n"
"                padding: 10px;\n"
"            }\n"
"            QPushButton:hover {\n"
"                background: qlineargradient(\n"
"                    spread: pad, \n"
"                    x1: 0, y1: 0, x2: 1, y2: 0, \n"
"                    stop: 0 rgba(173, 216, 230, 0.8), stop: 1 rgba(240, 128, 128, 0.8)\n"
"                );\n"
"            }")
        self.female_Button = QPushButton(self.frame)
        self.female_Button.setObjectName(u"female_Button")
        self.female_Button.setGeometry(QRect(600, 430, 51, 51))
        self.female_Button.setStyleSheet(u"QPushButton {\n"
"	border-image: url(:/Returnofrome_female_villager_icon.png);\n"
"    background-repeat: no-repeat; \n"
"    background-position: center; \n"
"	background-size: 1px;\n"
"    border-radius: 15px;\n"
"    border: none; \n"
"    padding: 0px; \n"
"}")
        self.username = QLineEdit(self.frame)
        self.username.setObjectName(u"username")
        self.username.setGeometry(QRect(350, 330, 321, 31))
        self.username.setStyleSheet(u"            QLineEdit {\n"
"                background-color: rgba(255, 255, 255, 0.3);  /* \u534a\u900f\u660e */\n"
"                border-width: 0 0 1px 0; /* \u5206\u522b\u8bbe\u7f6e\u4e0a\u3001\u53f3\u3001\u4e0b\u3001\u5de6\u8fb9\u6846\u7684\u5bbd\u5ea6\uff0c\u8fd9\u91cc\u4e0b\u8fb9\u6846\u4e3a1px\uff0c\u5176\u4ed6\u4e3a0 */\n"
"                border-style: none none solid none; /* \u5206\u522b\u8bbe\u7f6e\u4e0a\u3001\u53f3\u3001\u4e0b\u3001\u5de6\u8fb9\u6846\u7684\u6837\u5f0f\uff0c\u8fd9\u91cc\u4e0b\u8fb9\u6846\u4e3a\u5b9e\u7ebf\uff0c\u5176\u4ed6\u4e3a\u65e0\u6837\u5f0f */\n"
"                border-color: transparent transparent white transparent; /* \u5206\u522b\u8bbe\u7f6e\u4e0a\u3001\u53f3\u3001\u4e0b\u3001\u5de6\u8fb9\u6846\u7684\u989c\u8272\uff0c\u8fd9\u91cc\u4e0b\u8fb9\u6846\u4e3a\u767d\u8272\uff0c\u5176\u4ed6\u4e3a\u900f\u660e\u8272 */\n"
"                color: white;  /* \u5b57\u4f53\u989c\u8272\u767d\u8272 */\n"
"                font-size: 15px;  /* \u5b57\u4f53\u5927\u5c0f */\n"
"           "
                        "     padding: 5px;\n"
"            }")
        self.Gender = QLabel(self.frame)
        self.Gender.setObjectName(u"Gender")
        self.Gender.setGeometry(QRect(350, 440, 211, 31))
        font = QFont()
        font.setFamilies([u"Microsoft YaHei UI"])
        font.setKerning(True)
        self.Gender.setFont(font)
        self.Gender.setStyleSheet(u"font-size: 18px; color: white")
        self.cancel_button = QPushButton(self.frame)
        self.cancel_button.setObjectName(u"cancel_button")
        self.cancel_button.setGeometry(QRect(520, 490, 151, 41))
        self.cancel_button.setStyleSheet(u"            QPushButton {\n"
"                background: qlineargradient(\n"
"                    spread: pad, \n"
"                    x1: 0, y1: 0, x2: 1, y2: 0,\n"
"                    stop: 0 rgba(0, 0, 255, 0.8), stop: 1 rgba(255, 0, 0, 0.8)\n"
"                );\n"
"                color: white;\n"
"                font-size: 18px;\n"
"                border: 0px solid white;\n"
"                border-radius: 10px;\n"
"                padding: 10px;\n"
"            }\n"
"            QPushButton:hover {\n"
"                background: qlineargradient(\n"
"                    spread: pad, \n"
"                    x1: 0, y1: 0, x2: 1, y2: 0, \n"
"                    stop: 0 rgba(173, 216, 230, 0.8), stop: 1 rgba(240, 128, 128, 0.8)\n"
"                );\n"
"            }")
        self.age_gif.raise_()
        self.Gender.raise_()
        self.password.raise_()
        self.title_label.raise_()
        self.male_Button.raise_()
        self.login_button.raise_()
        self.female_Button.raise_()
        self.username.raise_()
        self.cancel_button.raise_()
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"\u5e1d\u56fd\u65f6\u4ee3 - \u767b\u5f55", None))
        self.password.setText("")
        self.password.setPlaceholderText(QCoreApplication.translate("MainWindow", u"\u8bf7\u8f93\u5165\u5bc6\u7801", None))
        self.title_label.setText(QCoreApplication.translate("MainWindow", u"\u6b22\u8fce\u6765\u5230\u5e1d\u56fd\u65f6\u4ee3", None))
        self.age_gif.setText(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><img src=\":/age_.gif\"/></p></body></html>", None))
        self.male_Button.setText("")
        self.login_button.setText(QCoreApplication.translate("MainWindow", u"\u767b\u5f55", None))
#if QT_CONFIG(tooltip)
        self.female_Button.setToolTip(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><br/></p></body></html>", None))
#endif // QT_CONFIG(tooltip)
        self.female_Button.setText(QCoreApplication.translate("MainWindow", u"\u5973", None))
        self.username.setText("")
        self.username.setPlaceholderText(QCoreApplication.translate("MainWindow", u"\u8bf7\u8f93\u5165\u7528\u6237\u540d", None))
        self.Gender.setText(QCoreApplication.translate("MainWindow", u"\u9009\u62e9\u6027\u522b: \u672a\u9009\u62e9", None))
        self.cancel_button.setText(QCoreApplication.translate("MainWindow", u"\u53d6\u6d88", None))
    # retranslateUi

import sys
import os
import subprocess
from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox, QLineEdit, QPushButton, QLabel, QVBoxLayout, QWidget
from PySide6.QtCore import Qt, Slot
from PySide6.QtGui import QIcon, QMovie

from login_ui import Ui_MainWindow  # 导入 UI 文件

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 初始化 UI
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # 设置无边框窗口和圆角
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)

        # 设置应用图标
        self.setWindowIcon(QIcon("ReturnRome-AoEIcon.png"))

        # 使用 QMovie 播放背景动图
        self.movie = QMovie(":/age_.gif")  # 确保资源路径正确
        self.ui.age_gif.setMovie(self.movie)
        self.movie.start()

        # 设置登录按钮的点击事件
        self.ui.login_button.clicked.connect(self.handle_login)

        # 设置 male 和 female 按钮点击事件
        self.ui.male_Button.clicked.connect(self.select_male)
        self.ui.female_Button.clicked.connect(self.select_female)

        # 设置取消按钮点击事件
        self.ui.cancel_button.clicked.connect(self.close)  # 关闭窗口

        # 创建用户名和密码输入框
        self.username_input = self.ui.username  # 使用 UI 中的 username 输入框
        self.password_input = self.ui.password  # 使用 UI 中的 password 输入框

        # 设置密码框为密码输入模式
        self.password_input.setEchoMode(QLineEdit.Password)

    @Slot()
    def handle_login(self):
        """处理登录事件"""
        username = self.username_input.text()
        password = self.password_input.text()

        # 验证用户名和密码
        if username == "admin" and password == "123456":
            # 登录成功,关闭当前界面并启动游戏
            QMessageBox.information(self, "登录成功", "欢迎进入帝国时代!")
            self.close()

            # 启动游戏程序
            game_path = r"D:\steam\steamapps\common\AoEDE\AoEDE_s.exe"
            if os.path.exists(game_path):  # 检查文件路径是否存在
                subprocess.Popen(game_path)  # 启动游戏
            else:
                QMessageBox.warning(self, "错误", "游戏文件未找到!")
        else:
            # 登录失败,显示错误信息并清空输入框
            QMessageBox.warning(self, "登录失败", "用户名或密码错误!")
            self.username_input.clear()
            self.password_input.clear()

    def select_male(self):
        """选择男性按钮事件"""
        self.ui.Gender.setText("选择性别: 男")

    def select_female(self):
        """选择女性按钮事件"""
        self.ui.Gender.setText("选择性别: 女")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/928846.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java程序调kubernetes(k8s1.30.7)core API简单示例,并解决403权限验证问题,即何进行进行权限授权以及验证

简单记录问题 一、问题描述 希望通过Java程序使用Kubernetes提供的工具包实现对Kubernetes集群core API的调用&#xff0c;但是在高版本上遇见权限验证问题4xx。 <dependency><groupId>io.kubernetes</groupId><artifactId>client-java</artifact…

图像处理网络中的模型水印

论文信息&#xff1a;Jie Zhang、Han Fang、Weiming Zhang、Wenbo Zhou、Hao Cui、Hao Cui、Nenghai Yu&#xff1a;Model Watermarking for Image Processing Networks 本文首次提出了图像处理网络中深度水印问题&#xff0c;将知识产权问题引入图像处理模型 提出了第一个深…

代码随想录算法训练营第51期第8天 | 344. 反转字符串、541.反转字符串 II、卡码网:54.替换数字

344. 反转字符串 344. 反转字符串https://leetcode.cn/problems/reverse-string/1.这道题很简单&#xff0c;直接使用双指针就可以 2.这里有一个可以优化的点&#xff0c;left和right-- 可以放在字符串替换的时候完成&#xff0c;没必要单独写 void reverseString(char* s, …

学习threejs,使用canvas更新纹理

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Texture 贴图 二、&#x1…

【机器学习】窥数据之序,悟算法之道:机器学习的初心与远方

文章目录 机器学习入门&#xff1a;从零开始学习基础与应用前言第一部分&#xff1a;什么是机器学习&#xff1f;1.1 机器学习的定义1.1.1 举个例子&#xff1a;垃圾邮件分类器 1.2 机器学习的核心思想1.2.1 数据驱动的模式提取1.2.2 为什么机器学习比传统方法更灵活&#xff1…

华为HarmonyOS 让应用快速拥有账号能力 -- 3 获取用户手机号

场景介绍 当应用对获取的手机号时效性要求不高时&#xff0c;可使用Account Kit提供的手机号授权与快速验证能力&#xff0c;向用户发起手机号授权申请&#xff0c;经用户同意授权后&#xff0c;获取到手机号并为用户提供相应服务。以下只针对Account kit提供的手机号授权与快…

查询品牌涉及两张表(brand、brand_admin_mapping)

文章目录 1、BrandController2、AdminCommonService3、BrandApiService3、BrandCommonService4、BrandSqlService涉及的表SQL 查询逻辑参数处理执行查询完整 SQL 逻辑参数映射总结 查询指定管理员下的品牌所涉及的表有哪些&#xff1f; http://127.0.0.1:8087/brand/admin/list…

请求响应:常见参数接收及封装(数组集合参数及日期参数)

数组参数 在前端页面的表单中&#xff0c;存在复选框元素&#xff0c;当提交表单到后端的时候&#xff0c;会将复选框中的全部内容提交到后端进行处理&#xff0c;由于复选框中往往存在很多数据&#xff0c;并且同复选框中数据名称相同&#xff0c;这样的请求参数叫做数组参数…

Artec Leo 3D扫描仪 革新家具行业的数字化展示【沪敖3D】

随着科技的飞速进步&#xff0c;三维扫描技术已被广泛应用于包括家居行业在内的多个行业。面对现代消费者对家居产品日益增长的个性化和多样化需求&#xff0c;传统的家居设计和展示方法已难以满足市场需求。三维扫描技术的出现&#xff0c;为家居行业带来了新的发展机遇&#…

Qt 安装Qt Serial Port

最近要用Qt写个串口上位机软件&#xff0c;发现Qt的串口库用不了&#xff0c;上网找了一下资料&#xff0c;找到一种解决办法&#xff0c;具体操作如下&#xff1a; 参考文章&#xff1a;https 目录 一、找到QT安装路径&#xff0c;并运行Qt Maintenance Tool二、选择 添加或移…

重生之我在异世界学编程之C语言:操作符篇

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文1. 算术操作符2. 关系&#xff0…

FPGA Xilinx维特比译码器实现卷积码译码

FPGA Xilinx维特比译码器实现卷积码译码 文章目录 FPGA Xilinx维特比译码器实现卷积码译码1 Xilinx维特比译码器实现2 完整代码3 仿真结果 MATLAB &#xff08;n,k,m&#xff09;卷积码原理及仿真代码&#xff08;你值得拥有&#xff09;_matlab仿真后代码-CSDN博客 MATLAB 仿真…

识别医疗设备制造中的变异性的三个步骤

质量控制是医疗设备制造的关键支柱。毕竟&#xff0c;如果产品不符合最高的安全和功能标准&#xff0c;人们可能会被误诊、受伤甚至死亡。每个设备都必须符合精确的规格和法规&#xff0c;即使是微小的偏差也可能产生重大影响。 我们将以优化磁共振成像&#xff08;MRI&#xf…

数据结构---链表(2)---双向链表

链表(1)中讲过了在OJ题中出现很多并且能作为一些复杂数据结构子结构的不带头单向不循环链表&#xff0c;下面讲解应用很广很实用的带头双向循环链表。 三、双向链表---DoublyLinkedList 演示带头双向循环链表(实用)。 带头--->不需要对空链表继续单独判断&#xff1b;循环…

JAVA |日常开发中读写TXT文本详解

JAVA &#xff5c;日常开发中读写TXT文本详解 前言一、读取 TXT 文本1.1 使用BufferedReader读取1.2 使用Scanner读取 二、写入 TXT 文本2.1 使用BufferedWriter写入2.2 使用PrintWriter写入2.3 字节流写入&#xff08;FileOutputStream&#xff09;后转换为字符流&#xff08;…

clion解决默认编译器乱码问题

解决乱码问题 如图所示当我们在clion下开发时如果输入中文&#xff0c;会有乱码出现。 问题的产生 clion默认的C/C编译器&#xff08;MinGW&#xff09;对中文的解析有问题出现乱码。 解决方案 修改文件的编码方式 进入clion的Settings(设置)–>Editor(编辑) —>Fil…

pset2 substitution.c

1.extension&#xff1a;To Do Tasks 推荐一个vscode里面一个很好用的插件&#xff01;&#xff01;&#xff01;写出解决的步骤&#xff0c;不但理清楚思路。还可以提高效率&#xff01;特别是针对一些文本比较长的pset&#xff0c;要求多且零碎&#xff0c;反复切换页面&…

程序员需要具备哪些知识?

程序员需要掌握的知识广泛而深厚&#xff0c;这主要取决于具体从事的领域和技术方向。不过&#xff0c;有些核心知识是共通的&#xff0c;就像建房子的地基一样&#xff0c;下面来讲讲这些关键领域&#xff1a; 1. 编程语言&#xff1a; 无论你是搞前端、后端、移动开发还是嵌…

解密时序数据库的未来:TDengine Open Day技术沙龙精彩回顾

在数字化时代&#xff0c;开源已成为推动技术创新和知识共享的核心力量&#xff0c;尤其在数据领域&#xff0c;开源技术的涌现不仅促进了行业的快速发展&#xff0c;也让更多的开发者和技术爱好者得以参与其中。随着物联网、工业互联网等技术的广泛应用&#xff0c;时序数据库…

云计算vsphere 服务器上添加主机配置

这里是esxi 主机 先把主机打开 然后 先开启dns 再开启 vcenter 把每台设备桌面再vmware workstation 上显示 同上也是一样 &#xff0c;因为在esxi 主机的界面可能有些东西不好操作 我们选择主机和集群 左边显示172.16.100.200