PyQt5写登录界面

首先了解PyQt5 可视化界面的写法,首先创建ui文件,建好后保存。点击tools->external tools->pyUIC将其转换为py文件。因为当界面变更时,转化为的py文件会更新,所以不要对该py文件进行改动。这里涉及一个界面和操作逻辑分离。具体参考下面这个博客,大致就是将界面的操作新写一个类,继承界面类,里面封装界面的各种操作,比如按钮点击事件。

https://www.cnblogs.com/linyfeng/p/11223707.html

点击登录按钮后跳转到新界面:
需要先给登录按钮设计逻辑,当用户名密码均匹配时关闭本窗口,开启新窗口。在init函数中为self新设一个成员变量,就是新窗口实体。在需要显示新窗口的位置将其show出来,将self关闭即可。

#登录界面:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import db
from PyQt5 import QtCore, QtWidgets
from main import Ui_widget

class Ui_MainWindow(QMainWindow):
    def __init__(self):
        super(Ui_MainWindow, self).__init__()
        self.setupUi(self)
        db.createUserTable()#创建数据库
        
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.load = QtWidgets.QPushButton(self.centralwidget)
        self.load.setGeometry(QtCore.QRect(220, 310, 93, 28))
        self.load.setObjectName("load")

        self.reg = QtWidgets.QPushButton(self.centralwidget)
        self.reg.setGeometry(QtCore.QRect(470, 310, 93, 28))
        self.reg.setObjectName("reg")

        self.id = QtWidgets.QLabel(self.centralwidget)
        self.id.setGeometry(QtCore.QRect(310, 150, 72, 15))
        self.id.setObjectName("id")
        self.pwd = QtWidgets.QLabel(self.centralwidget)
        self.pwd.setGeometry(QtCore.QRect(310, 220, 72, 15))
        self.pwd.setObjectName("pwd")
        self.id_text = QtWidgets.QLineEdit(self.centralwidget)
        self.id_text.setGeometry(QtCore.QRect(460, 150, 113, 21))
        self.id_text.setObjectName("id_text")
        self.pwd_text = QtWidgets.QLineEdit(self.centralwidget)
        self.pwd_text.setGeometry(QtCore.QRect(460, 220, 113, 21))
        self.pwd_text.setObjectName("pwd_text")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "登陆界面"))
        self.load.setToolTip(_translate("MainWindow", "登录"))
        self.load.setText(_translate("MainWindow", "登录"))
        self.reg.setText(_translate("MainWindow", "注册"))
        self.id.setText(_translate("MainWindow", "用户名"))
        self.pwd.setText(_translate("MainWindow", "密码"))
#主界面
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication

class Ui_widget(QtWidgets.QMainWindow):

    def __init__(self):
        super(Ui_widget, self).__init__()
        self.setupUi(self)

    def setupUi(self, widget):
        widget.setObjectName("widget")
        widget.resize(965, 637)
        self.choose = QtWidgets.QPushButton(widget)
        self.choose.setGeometry(QtCore.QRect(200, 70, 93, 28))
        self.choose.setObjectName("choose")
        self.imgView = QtWidgets.QGraphicsView(widget)
        self.imgView.setGeometry(QtCore.QRect(340, 170, 491, 331))
        self.imgView.setObjectName("imgView")
        self.retranslateUi(widget)
        QtCore.QMetaObject.connectSlotsByName(widget)

    def retranslateUi(self, widget):
        _translate = QtCore.QCoreApplication.translate
        widget.setWindowTitle(_translate("widget", "监测"))
        self.choose.setText(_translate("widget", "选择视频"))
#总逻辑
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

import db
from xxsystem import Ui_MainWindow
from main import  Ui_widget

class login_UI(Ui_MainWindow):
    def __init__(self):
        super(login_UI, self).__init__()
        self.setupUi(self)
        self.mainFrame = main_UI()
        # 注意下面的函数名不能加()
        self.load.clicked.connect(self.load_click)
        self.reg.clicked.connect(self.reg_click)

    def load_click(self):
         id=self.id_text.text()
         pwd=self.pwd_text.text()
         if id=='':
             print("请输入用户名")
         if pwd=='':
             print("请输入密码")
         if id!='' and pwd!='':
            cmd=db.login(id,pwd)
            print(cmd)
            if cmd=="login success":

                 self.mainFrame.show()
                 self.close()


    def reg_click(self):
        id = self.id_text.text()
        pwd = self.pwd_text.text()
        if id == '':
            print("请输入用户名")
        if pwd == '':
            print("请输入密码")
        if id != '' and pwd != '':
            cmd=db.register(id,pwd)
            print(cmd)


class main_UI(Ui_widget):
    def __init__(self):
        super(main_UI, self).__init__()

if __name__=='__main__':
    app=QApplication(sys.argv)

    frame=login_UI()
    frame.show()

    sys.exit(app.exec())

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值