运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

(6)pyqt5--->窗口跳转(注册登录功能)

运维开发网 https://www.qedev.com 2021-05-14 20:55 出处:51CTO 作者:Oo_。oO
(6)pyqt5--->窗口跳转(注册登录功能),haominghu原创的Python文章。

GitHub连接:

本专栏所有源代码的GitHub直通车

本专栏所有源代码的Gitte地址

上一篇已经讲了连接信号和槽的另外一种方法

这篇博客本来在2020年年末就应该发出来了,一直拖到现在! 在复习的空闲,能够去写一下舒心的东西真的享受

这次主要的内容就是界面跳转实现登录功能

我用的办法比较的笨拙,但是能用。其实只要完成一个事情就完全OK了:当你的登录按钮的click时间被处触发的时候,你连接的槽函数应该是你自己的登录API,当然我这次用的是我自己服务器的登录接口函数,你们使用的时候换成自己的登录API就可以,话说回来,如果你验证成功了,你需要向两个界面分别传递信息,做出关闭本窗口和打开新窗口的动作,我习惯于将槽函数写在我自己的类里面,这样子就没法给另外一个窗口对象传递信息(暂时没想到好方法),所以我直接将这个槽函数直接写在主线程中,然后按钮绑定事件也在槽函数之后绑定。

以前在写tkinter的时候就是这么干的,暂时没有出什么问题,可以说是简单粗暴

本次的代码文件主要是有

  • login_ui.py
  • main_ui.py
  • main.py

前两个是ui转过来的py文件,main.py文件是程序运行的文件

如果不想去GitHub上面下载代码的话,我就直接贴出来了

login_ui.py

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

# Form implementation generated from reading ui file 'login.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# 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(object):
    def setupUi(self, login):
        login.setObjectName("login")
        #login.setStyleSheet("#login{background-color:green}")
        login.resize(412, 269)
        self.id_label = QtWidgets.QLabel(login)
        self.id_label.setGeometry(QtCore.QRect(110, 60, 51, 41))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        self.id_label.setFont(font)
        self.id_label.setObjectName("id_label")
        self.pw_label_2 = QtWidgets.QLabel(login)
        self.pw_label_2.setGeometry(QtCore.QRect(110, 120, 51, 41))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(14)
        self.pw_label_2.setFont(font)
        self.pw_label_2.setObjectName("pw_label_2")
        self.login_pushButton = QtWidgets.QPushButton(login)
        self.login_pushButton.setGeometry(QtCore.QRect(100, 200, 75, 23))
        self.login_pushButton.setObjectName("login_pushButton")
        self.exit_pushButton = QtWidgets.QPushButton(login)
        self.exit_pushButton.setGeometry(QtCore.QRect(240, 200, 75, 23))
        self.exit_pushButton.setObjectName("exit_pushButton")
        self.lineEdit_id = QtWidgets.QLineEdit(login)
        self.lineEdit_id.setGeometry(QtCore.QRect(170, 70, 113, 20))
        self.lineEdit_id.setObjectName("lineEdit_id")
        self.lineEdit_pw = QtWidgets.QLineEdit(login)
        self.lineEdit_pw.setGeometry(QtCore.QRect(170, 130, 113, 20))
        self.lineEdit_pw.setObjectName("lineEdit_pw")
        self.lineEdit_pw.setEchoMode(QtWidgets.QLineEdit.Password)
        self.retranslateUi(login)
        self.exit_pushButton.clicked.connect(login.close)
        QtCore.QMetaObject.connectSlotsByName(login)

    def retranslateUi(self, login):
        _translate = QtCore.QCoreApplication.translate
        login.setWindowTitle(_translate("login", "Form"))
        self.id_label.setText(_translate("login", "账号"))
        self.pw_label_2.setText(_translate("login", "密码"))
        self.login_pushButton.setText(_translate("login", "登录"))
        self.exit_pushButton.setText(_translate("login", "退出"))

main_ui.py文件

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

# Form implementation generated from reading ui file 'main.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# 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_main(object):
    def setupUi(self, main):
        main.setObjectName("main")
        main.resize(1007, 631)

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

    def retranslateUi(self, main):
        _translate = QtCore.QCoreApplication.translate
        main.setWindowTitle(_translate("main", "Form"))

main.py文件

"""
/********************************************************************************
* @Filename: main.py
* @Author: haomingHu
* @Version: 1.0
* @Date:  2021-03-26
* @Description: 
* @History: 
********************************************************************************/
"""



from login_ui import Ui_login
from main_ui  import Ui_main
import sys
from PyQt5 import QtWidgets
from PyQt5.QtGui import QPalette,QBrush,QPixmap
from PyQt5.QtCore import Qt

class myLogin(QtWidgets.QWidget,Ui_login):
    login_state = 0 
    def __init__(self):
        super(myLogin,self).__init__()
        self.setupUi(self)
        loginPalette = QPalette()
        loginPalette.setBrush(QPalette.Background, QBrush(QPixmap("./loginbackground.jpg")))
        #loginPalette.setColor(QPalette.Background, Qt.blue)
        self.setPalette(loginPalette)

class myMainGui(QtWidgets.QWidget,Ui_main):
    userID = ""
    #构造函数
    def __init__(self):
        super(myMainGui,self).__init__()
        self.setupUi(self)

    def closeEvent(self,event):#函数名固定不可变
        reply=QtWidgets.QMessageBox.question(self,u'Notice!',u'Are you  sure to exit?'
            ,QtWidgets.QMessageBox.Yes,QtWidgets.QMessageBox.No)
        #QtWidgets.QMessageBox.question(self,u'弹窗名',u'弹窗内容',选项1,选项2)
        if reply==QtWidgets.QMessageBox.Yes:
            event.accept()#关闭窗口
        else:
            event.ignore()#忽视点击X事件



if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    myLogin = myLogin()
    myLogin.show()
    mainGUI = myMainGui()
    
    userIDSure = ""
    flag = 0
    def login_check():
        userID = myLogin.lineEdit_id.text()
        user_PW = myLogin.lineEdit_pw.text()
        print(userID)
        print(user_PW)
        '''
        这里我使用的是我服务器的登录请求接口
        使用的时候换成自己封装好的登录验证接口即可
        '''
        
        '''
        正常来说,登录成功的话,需要将登陆成功的用户信息回传给主界面
        也就是告诉主界面,是哪个用户登录了,这个时候可以在主界面的类中定义
        一些类属性,如果登录成功,则将lineedit对象的输入内容赋值给类属性即可
        '''
        #login_flag = event.loginRequest(userID,user_PW)
        #if login_flag == 0:
        if userID == "1" and user_PW == "1":
            myLogin.login_state = 1
            mainGUI.userID = myLogin.lineEdit_id.text()
            myLogin.close()
            mainGUI.show()
            
    myLogin.login_pushButton.clicked.connect(login_check)

    sys.exit(app.exec_())

(6)pyqt5--->窗口跳转(注册登录功能)

补充知识点:

  • 获取lineedit的输入内容方法:

使用lineedit的text方法直接获取,获取的对象是一个字符串的对象。

        userID = myLogin.lineEdit_id.text()
        user_PW = myLogin.lineEdit_pw.text()
  • 设置背景(后面会写一个博客)
  1. 窗口对象自带的setStyleSheet方法
​    login.setObjectName("login")

​    login.setStyleSheet("#login{background-color:green}")

​ 2、使用QPalette类

window = QMainWindow()
palette = QPalette()
palette.setColor(QPalette.Background, Qt.red)
window.setPalette(palette)

祝大家生活开心,学习开心!

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号