Pyqt5+python2.7 美观的登陆界面制作(二)

2023-10-28

简介

继上一篇的安装,这一篇主要讲下登陆界面的制作,之后也会把自己做毕业设计中在csdn上没有找到自己解决的一些界面上的问题解决方法共享出来,最近事情比较多,更新会有点慢,但还是希望能对大家有帮助啦。
先上一张我毕业设计最后做出来的登陆界面效果图在这里插入图片描述
最终的效果还是不错的(可能是自己做的,自我感觉hhh,非专业)
接下来简单讲下如何制作一个上图界面的步骤

步骤一:PSD文件制作

首先我们要制作一个ui界面,之前我们装的qtdesigner虽然很好用,但是一上手就开始做ui文件很难去调好一个布局,我使用photoshop取巧,先在photoshop里把各个图层位置排列好,调成我想要的样子。
在这里插入图片描述
为了方便大家使用,我把我做的psd整理了一下做了个参考版,之后会共享出来整个工程,这一步如果大家想用的话可以直接改背景和标题,有想自己做的话也可以的,主要是制作成psd文件。
先将背景图保存下来,再通过剪切功能把每一部分的控件给扣出来,保存成指定的jpg文件,方便之后制作ui文件在这里插入图片描述
都保存在同一个目录下,方便之后调用
在这里插入图片描述

步骤二:UI工程制作

打开qtdesigner,新建一个工程Widget(不是Main Window,因为我们做的是登陆界面不是主窗口),通过在这里插入图片描述
通过资源属性管理(右下角)建立qrc,导入我们之前扣好的jpg文件在这里插入图片描述
接下来先通过拉入Lable控件来做背景图片,背景图片可以通过样式编辑器去设置(右键–改变样式),也可以通过属性编辑器来的pixmap来导入,导入完后我们拉伸到自己想要的大小,效果如下
在这里插入图片描述
从Widget Box中拖入LineEdit来制作用户名和密码输入框,位置和大小参照psd中设置好的覆盖即可(这时候就显示出先做psd的好处,不用去调位置很烦),在属性编辑中可以调节输入框中的几个样式,大家可以自己去试试功能,然后ctrl+r 看看运行效果,接下来主要说说我添加的样式表在这里插入图片描述
样式表的添加是有一定的格式的,一定要在大括号内,一开始的名字是指这个控件的名字,如你改的是LineEdit,就是QLineEdit,同样,Label就是QLabel,冒号后面的是他的状态,有hover(鼠标覆盖时),hide(隐藏时),pressed(鼠标按下时)等,这个可以自己去网上查,就不贴出来了,这里我沿用了我毕业设计中写的一个是鼠标覆盖时会变化,这个参考版的没有做出来,但是和按键是一样的,可以参考按键做,贴出一些可以参考的按键修改方式(来自于https://blog.csdn.net/sinan1995/article/details/80080148

 setStyleSheet(
                   //正常状态样式
                   "QPushButton{"
                   "background-color:rgba(100,225,100,30);"//背景色(也可以设置图片)
                   "border-style:outset;"                  //边框样式(inset/outset)
                   "border-width:4px;"                     //边框宽度像素
                   "border-radius:10px;"                   //边框圆角半径像素
                   "border-color:rgba(255,255,255,30);"    //边框颜色
                   "font:bold 10px;"                       //字体,字体大小
                   "color:rgba(0,0,0,100);"                //字体颜色
                   "padding:6px;"                          //填衬
                   "}"
                   //鼠标按下样式
                   "QPushButton:pressed{"
                   "background-color:rgba(100,255,100,200);"
                   "border-color:rgba(255,255,255,30);"
                   "border-style:inset;"
                   "color:rgba(0,0,0,100);"
                   "}"
                   //鼠标悬停样式
                   "QPushButton:hover{"
                   "background-color:rgba(100,255,100,100);"
                   "border-color:rgba(255,255,255,200);"
                   "color:rgba(0,0,0,200);"
                   "}");

用同样的方法导入密码框,然后在Widget Box中拉入PushButton来设置登录和退出框,案件样式表设置如下
在这里插入图片描述
完成之后运行一下,效果如图
在这里插入图片描述
在这里插入图片描述
鼠标放置的时候有点亮的效果,到这里我们的ui就制作完成了,保存进入下一步。

步骤三:UI文件转换为Python代码

通过pycharm中的pyuic和pyrcc工具将ui文件和qrc文件转换为py文件,这样我们就可以在这上面编辑功能了
在这里插入图片描述

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    mainWindow = QtWidgets.QMainWindow()
    ui = Ui_Load_lineEdit()
    ui.setupUi(mainWindow)
    mainWindow.show()
    sys.exit(app.exec_())

在文件中末尾添加以上代码,运行py文件,可以看到py运行的效果。

步骤四:功能编辑添加

在同一目录下新建一个py文件,我新建了一个test.py,然后添加代码,代码有标注大家自己理解参考,不好复现可以下载我上传的工程哈

# -- coding: utf-8 --
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog,QTabWidget
from PyQt5.QtGui import QPixmap, QImage
from Load_Demo import Ui_Load_lineEdit


# 登录用户和密码信息
USER_PWD = {
    'la_vie': 'password', 'user': '1234'
}

################################################
#######创建主窗口
################################################
class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        #super(MainWindow,self).__init__(*args, **kwargs)


################################################
#######登录对话框
################################################
class logindialog(QDialog,Ui_Load_lineEdit):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        #super(logindialog, self).__init__(*args, **kwargs)
        self.setupUi(self) ##初始化界面内容
        self.setWindowFlags(Qt.FramelessWindowHint)

        ## 绑定按钮事件
        self.pushButton_enter.clicked.connect(self.check_login_func)
        self.pushButton_close.clicked.connect(self.check_close_func)

    # 判断用户密码是否正确
    def check_close_func(self):
        self.close()

    # 判断用户密码是否正确
    def check_login_func(self):
        if USER_PWD.get(self.lineEdit_user.text()) != self.lineEdit_password.text():
            QMessageBox.critical(self, 'Wrong', '用户名或密码错误!')
            return
        self.accept()
        self.lineEdit_user.clear()
        self.lineEdit_password.clear()


################################################
#######主程序
################################################
if __name__ == "__main__":
    app = QApplication(sys.argv)
    dialog = logindialog()
    if  dialog.exec_()==QDialog.Accepted:
        the_window = MainWindow()
        the_window.show()
    sys.exit(app.exec_())


功能代码中包含一些判断密码正确与否的逻辑,很简单,如果要做主窗口将类添加在Mainwindows的类中就可以了,现在打开是空白的。

到此我们的登陆界面就完成啦,希望有所帮助。
工程下载链接如下:
https://download.csdn.net/download/qq_34919792/10991341

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pyqt5+python2.7 美观的登陆界面制作(二) 的相关文章

随机推荐

  • 数据库试题

    1 单选题 下列关于关系型数据库说法错误的是 A 使用键值对存储数据 B 关系型数据库 是指采用了关系模型来组织数据的数据库 C 关系型数据库的最大特点就是事务的一致性 D 关系型数据库的不足 大量数据的操作 字段的不固定 对表的索引以及表
  • 分支与循环语句_C语言入门

    目录 2 分支语句 什么是分支语句 2 1 if 语句 2 1 1 单分支 2 1 2 双分支 2 1 3 多分支 2 2 switch 选择结构 2 2 2 default 子句 3 循环语句 3 1for 循环 3 1 1 for循环的
  • Tomcat 详解(安装Tomcat、启动和配置,发布一个web网站)

    接下来开始 Tomcat DE 详细介绍 文章目录 一 安装Tomcat 二 Tomcat 启动和配置 2 1 目录文件 2 2 启动 Tomcat 测试 2 3 关闭 Tomcat 三 配置 四 发布一个 web 网站 五 常见面试题 一
  • Android系统之Bundle用法

    1 Bundle概述 Bundle在Android开发中非常常见 它的作用主要时用于传递数据 Bundle传递的数据包括 string int boolean byte float long double等基本类型或它们对应的数组 也可以是
  • springboot项目maven老是加载不了jar包如SpringBootApplication找不到

    困扰我好久了所以开贴记录一下 解决办法 我是清理了一些里面的杂乱的项目 就好了 具体的原因不太清楚 不过 应该事其他的项目造成的干扰 导致项目不能加载 以上方法不知道所以 下面方法可以尝试 在Maven命令后加入参数 Dmaven wago
  • 华为OD机试真题-静态代码扫描服务【2023Q1】【JAVA、Python、C++】

    题目描述 静态扫描快速快速识别源代码的缺陷 静态扫描的结果以扫描报告作为输出 1 文件扫描的成本和文件大小相关 如果文件大小为N 则扫描成本为N个金币 2 扫描报告的缓存成本和文件大小无关 每缓存一个报告需要M个金币 3 扫描报告缓存后 后
  • StringUtils详细介绍

    转自 https www oschina net code snippet 239959 8724 commentform public static void TestStr null 和 操作 判断是否Null 或者 System ou
  • 【Shell牛客刷题系列】SHELL16 判断输入的是否为IP地址:来练习正则表达式~

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 本文首先结合之前正则表达式的相关知识 给出了IP地
  • 苹果ipcc下载

    http ax phobos apple com edgesuite net WebObjects MZStore woa wa com apple jingle appserver client MZITunesClientCheck v
  • 飞桨学习笔记之经典图像分类模型

    1 LeNet 2 AlexNet 3 VGG 4 GoogLeNet 5 ResNet 1 LeNet LeNet 通过连续使用卷积和池化层的组合提取图像特征 网络结构示意图 第一模块 包含5 5的6通道卷积和2 2的池化 卷积提取图像中
  • request_time和upstream_response_time详解

    下图是request time 下图是upstream response time 精准的描述就是 request time是从接收到客户端的第一个字节开始 到把所有的响应数据都发送完为止 upstream response time是从与
  • CTK系列之编译

    CTK编译 CTK编译笔记 资源下载 CTK 源码下载 master ctk github 链接 cmake环境准备 下载最新版本cmake的window安装包直接安装即可 camke下载链接 编译前准备 以本次安装为例 安装目录选择实在C
  • 考研复试数据库原理课后习题(十五)——数据仓库和联机分析处理技术

    数据仓库和联机分析处理技术 1 数据仓库的4个基本特征是什么 数据仓库的4个基本特征如下 数据仓库的数据是面向主题的 主题是一个抽象的概念 是在较高层次上将企业信息系统中的数据综合 归类并进行分析利用的抽象 面向主题的数据组织方式是根据分析
  • Python执行windows命令,报中文乱码解决方法

    笔者通过subprocess模块在windows机器上执行ping 服务器命令 结果报如下错误 Ping hostname 在这里可以用python的第三发插件chardet来探测一下原有字符是什么编码 如果没有安装 可以用命令 pip i
  • 闻达(wenda+chatGLM-6B)一键部署包

    本文是 基于闻达 wenda chatGLM 6B 构建自己的知识库小助手 的一键部署包 将处理数据 模型启动整理为 可执行脚本 并提供内置python虚拟环境 无需任何额外的环境配置 只需要上传自己的知识库文件即可使用 部署包链接 链接
  • 硬件系统工程师宝典(14)-----建议收藏!常用的多层板叠层结构“大揭秘”

    各位同学大家好 欢迎继续做客电子工程学习圈 今天我们继续来讲这本书 硬件系统工程师宝典 上篇我们说到PCB的布局可根据功能 频率 信号类型划分 布局时考虑敏感信号远离噪声源 今天我们来看看多层板的常用叠层结构 四层板的叠层结构 四层板的叠层
  • 用python对excel进行批量处理(1):将表格中的url用requests替换成图片

    前言 事情是这样的 npy说今天的工作里有一个900个项目的excel 表格的样子大概如下图所示 需求呢是将下图中的url全部替换成对应的图片添加到excel中 作为一个程序员 这样的任务要是手动做真是太难为人了 所以打算帮npy减轻一下负
  • (尚硅谷)JavaWeb新版教程08-QQZone项目的实现

    目录 1 熟悉 QQZone 业务需求 2 数据库设计 2 1 抽取实体 2 2 分析其中的属性 2 3 分析实体之间的关系 2 4 数据库的范式 3 根据数据库的表新建 pojo 类 ORM编程思想 3 1 UserBasic 类 3 2
  • CTFshow web入门 web3

    CTFshow web入门 web3 题目提示没思路的时候进行抓一下包 这道题还可以用burpsuite来抓 但是感觉有点大材小用 直接用Network做比较简单点
  • Pyqt5+python2.7 美观的登陆界面制作(二)

    简介 继上一篇的安装 这一篇主要讲下登陆界面的制作 之后也会把自己做毕业设计中在csdn上没有找到自己解决的一些界面上的问题解决方法共享出来 最近事情比较多 更新会有点慢 但还是希望能对大家有帮助啦 先上一张我毕业设计最后做出来的登陆界面效