使用PYQT5设计登录界面并实现界面跳转

目录 

1 UI登录界面的布局

2 UI登录界面布局对应的代码

3 登录界面和界面跳转完整代码

4 跳转界面代码函数和优化界面代码

5 最终效果


1 UI登录界面的布局

       其中,<欢迎使用 XXXX 软件><管理员><密码>使用的是左边功能的 label 类、<登录>使用的是左边功能的 Push Button 类、<管理员和密码>的输入使用的是左边功能的  Line Edit 类。这些输出显示和按键功能中的字体大小和边框都可以对应根据右边的属性进行更改设置。

2 UI登录界面布局对应的代码

(1)项目的目录如下,login.ui 是上面保存的的界面布局。

 (2)UI界面布局的对应代码,则是 login.py 文件,可以右击 login.ui 文件,找到 Exernal Tools 。然后点击 PyUIC ,就可以自动生成 login.py 文件,具体操作和生成的代码如下:

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

# Form implementation generated from reading ui file 'login.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_login_MainWindow(object):
    def setupUi(self, login_MainWindow):
        login_MainWindow.setObjectName("login_MainWindow")
        login_MainWindow.setEnabled(True)
        login_MainWindow.resize(575, 392)
        login_MainWindow.setAnimated(True)
        self.centralwidget = QtWidgets.QWidget(login_MainWindow)
        self.centralwidget.setEnabled(True)
        self.centralwidget.setObjectName("centralwidget")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(90, 30, 391, 79))
        font = QtGui.QFont()
        font.setPointSize(30)
        font.setBold(True)
        font.setItalic(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(100, 200, 71, 41))
        font = QtGui.QFont()
        font.setPointSize(15)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(100, 150, 81, 41))
        font = QtGui.QFont()
        font.setPointSize(15)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(180, 200, 221, 41))
        font = QtGui.QFont()
        font.setPointSize(15)
        self.lineEdit.setFont(font)
        self.lineEdit.setText("")
        self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(180, 150, 221, 41))
        font = QtGui.QFont()
        font.setPointSize(15)
        self.lineEdit_2.setFont(font)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(180, 280, 171, 51))
        font = QtGui.QFont()
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        login_MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(login_MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 575, 22))
        self.menubar.setObjectName("menubar")
        login_MainWindow.setMenuBar(self.menubar)

        self.retranslateUi(login_MainWindow)
        QtCore.QMetaObject.connectSlotsByName(login_MainWindow)

    def retranslateUi(self, login_MainWindow):
        _translate = QtCore.QCoreApplication.translate
        login_MainWindow.setWindowTitle(_translate("login_MainWindow", "MainWindow"))
        self.label_3.setText(_translate("login_MainWindow", "欢迎使用 XXXX 软件"))
        self.label_2.setText(_translate("login_MainWindow", "密码:"))
        self.label.setText(_translate("login_MainWindow", "管理员:"))
        self.lineEdit_2.setText(_translate("login_MainWindow", "帅哥"))
        self.pushButton.setText(_translate("login_MainWindow", "登录"))

3 登录界面和界面跳转完整代码

下面是登录界面和跳转界面的完整代码 login_mian.py :(跳转的界面 是我的上一篇博客使用PYQT5打开电脑摄像头并进行拍照_暂未成功人士!的博客-CSDN博客,具体可以查看我上一篇博文)

#self.pushButton.setShortcut(_translate("MainWindow", "enter")) #设置快捷键
import sys

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QImage, QPixmap, QKeyEvent

from PyQt5.QtWidgets import QMessageBox
from login import Ui_login_MainWindow
from open_camera_main import *
from PyQt5.QtCore import Qt


class login_window(QtWidgets.QMainWindow, Ui_login_MainWindow):
    def __init__(self):
        super(login_window, self).__init__()
        self.setupUi(self)  # 创建窗体对象
        self.init()
        self.admin = "帅哥"
        self.Password = "000"

    def init(self):
        self.pushButton.clicked.connect(self.login_button) #连接槽

    def login_button(self):
        if self.lineEdit.text()=="":
            QMessageBox.warning(self, '警告', '密码不能为空,请输入!')
            return None

        # if  self.password == self.lineEdit.text():
        if (self.lineEdit.text()== self.Password) and self.lineEdit_2.text()== self.admin:
            # Ui_Main = Open_Camera()  # 生成主窗口的实例
            # 1打开新窗口
            Ui_Main.show()
            # 2关闭本窗口
            self.close()
        else:
            QMessageBox.critical(self, '错误', '密码错误!')
            self.lineEdit.clear()
            return None


if __name__ == '__main__':
    from PyQt5 import QtCore
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)#自适应分辨率

    app = QtWidgets.QApplication(sys.argv)
    window = login_window()
    Ui_Main = Open_Camera()# 生成主窗口的实例
    window.show()

    sys.exit(app.exec_())

4 跳转界面代码函数和优化界面代码

(1)界面跳转主要添加的代码为下面图中的  <1> <2> 步骤中的部分:

 (2)登录按钮快捷键设计,即按键盘  <enter>  键就可进行登录跳转。

self.pushButton.setShortcut(_translate("login_MainWindow", "Enter")) #设置快捷键

添加上面的代码到 login.py 文件中的最下方即可:

或者在设计界面上的右面添加按键的快捷方式,如下图

 (3)注意两个界面的函数不能一样,因为一般没有更改的用PyUIC直接生成的.py文件的函数名是一样的,要进行更改。

5 最终效果

 本篇博文和上一篇博文使用PYQT5打开电脑摄像头并进行拍照_暂未成功人士!的博客-CSDN博客这两篇结合在一起就可达到下面的效果:

点击登录后的界面

来源:暂未成功人士!

物联沃分享整理
物联沃-IOTWORD物联网 » 使用PYQT5设计登录界面并实现界面跳转

发表评论