pyqt5利用pyqtDesigner实现登录界面


Posted in Python onMarch 28, 2019

本文实例为大家分享了pyqt5利用pyqtDesigner实现登录界面的具体代码,供大家参考,具体内容如下

为便于操作 界面和逻辑分离

逻辑类:

import sys
import pymysql
from loginUI import *  //导入
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtCore import *
from PyQt5.QtGui import 
class Login(QtWidgets.QDialog):
 def __init__(self):
  super(Login, self).__init__()
  self.ui = Ui_login_Ui()
  self.ui.setupUi(self)

  # self.setMinimumSize(QtCore.QSize(400, 200)) # 控制缩放范围
  # self.setMaximumSize(QtCore.QSize(400, 200))
  self.setWindowTitle("欢迎使用停车场管理系统")
  self.setFixedSize(self.width(), self.height())
  self.ui.labelTip.hide()
  self.ui.labelTip.setText("密码或用户名不能为空!")
  # 设置label字体
  labelFont = QFont()
  labelFont.setPixelSize(15)
  # 设置动态背景
  self.gif = QMovie('bg2.gif')
  self.ui.label_2.setMovie(self.gif)
  self.gif.start()
  # 这在label属性
  self.ui.labelTip.setStyleSheet(
   "QLabel{color:red;font-size:12px;font-weight:bold;font-family:Roman times;}"
         )
  self.ui.userLabel.setStyleSheet("QLabel{background:white;}"
     "QLabel{color:rgb(100,100,100,250);font-size:15px;font-weight:bold;font-family:Roman times;}"
     "QLabel:hover{color:rgb(300,300,300,120);}")
  self.ui.pwdlabel.setStyleSheet("QLabel{background:white;}"
     "QLabel{color:rgb(100,100,100,250);font-size:15px;font-weight:bold;font-family:Roman times;}"
     "QLabel:hover{color:rgb(300,300,300,120);}")
  self.ui.label.setStyleSheet("QLabel{background:white;}"
     "QLabel{color:rgb(100,100,100,250);font-size:15px;font-weight:bold;font-family:Roman times;}"
     "QLabel:hover{color:rgb(300,300,300,120);}")
 
  self.ui.loginButton.setStyleSheet("QPushButton{color:black}"
            "QPushButton:hover{color:red}"
            "QPushButton{background-color:lightblue}"
            "QPushButton{border:2px}"
            "QPushButton{border-radius:10px}"
            "QPushButton{padding:2px 4px}")
  self.ui.registerButton.setStyleSheet("QPushButton{color:black}"
            "QPushButton:hover{color:red}"
            "QPushButton{background-color:lightgreen}"
            "QPushButton{border:2px}"
            "QPushButton{border-radius:10px}"
            "QPushButton{padding:2px 4px}")
 
  palette = QPalette()
  icon = QPixmap('bg2.gif').scaled(800, 600)
  palette.setBrush(self.backgroundRole(), QBrush(icon))
  self.setPalette(palette)
  self.ui.userLabel.setFont(labelFont)
  self.ui.pwdlabel.setFont(labelFont)
  self.ui.label.setFont(labelFont)
  # 设置控件尺寸
  # self.ui.userlineEdit.setFrame(False)
  # self.ui.pwdlineEdit.setFrame(False)
  self.ui.pwdlineEdit.setEchoMode(QLineEdit.Password)# 输入框设为密码模式
  self.ui.pwdlineEdit.setClearButtonEnabled(True)
  self.ui.userlineEdit.setClearButtonEnabled(True)
  self.ui.userlineEdit.setFixedWidth(190)
  self.ui.userlineEdit.setFixedHeight(30)
  self.ui.pwdlineEdit.setFixedWidth(190)
  self.ui.pwdlineEdit.setFixedHeight(30)
  self.ui.comboBox.setFixedWidth(100)
  self.ui.comboBox.setFixedHeight(28)
  self.ui.loginButton.setFixedSize(75, 28)
  self.ui.registerButton.setFixedSize(75, 28)
  self.ui.loginButton.setShortcut('Enter') # shortcut key
  # 登陆的槽函数登陆按钮 最好写在init的析构函数中,避免链接多次产生异常
  self.ui.loginButton.clicked.connect(self.slotLogin)
  self.ui.registerButton.clicked.connect(self.slotRegister)
  self.ui.pushButton.clicked.connect(self.findPwd)

  name = self.ui.userlineEdit.text()
  pwd = self.ui.pwdlineEdit.text()
  identity = self.ui.comboBox.currentIndex()
  identity = str(identity)
  sql = "select * from administrater where username = '" + name + "' and password = '" + pwd + "' and identity= '"+ identity +"' "
  db = PyMySQLHelper()
  db.selectALL(sql)

 def keyPressEvent(self, event):
  if event.key() == QtCore.Qt.Key_Enter:
   self.slotLogin()
 def findPwd(self):
  # self.accept()
  self.u = FPwd_ui()
  self.u.show()
  # self.ui.exec()
 def slotLogin(self):
  # # 获得登录输入
  name = self.ui.userlineEdit.text()
  pwd = self.ui.pwdlineEdit.text()
  print(name)
  db = PyMySQLHelper() 
  identity = self.ui.comboBox.currentIndex() # 获取下标
  identity = str(identity)

  if name != '' and pwd != '':
   if identity == '0':

    sql = "select * from administrater where username = '" + name + "' and " \
                    "password = '" + pwd + "' and identity= '" + identity + "' "
    print(sql)
    # cursor.execute(sql)
    # results = cursor.fetchall()
    results = db.selectALL(sql)

    if results:
     self.ui1 = Finance()
     # self.ui1.exec()
     self.ui1.show()
     self.close()
    else:
     OK = QMessageBox.warning(self, ("警告"), ("""账号或密码错误!"""))
    # cursor.close()
    # conn.close()
   elif identity == '1':

    sql = "select * from administrater where username = '" + name + "' and " \
                    "password = '" + pwd + "' and identity= '" + identity + "' "
    print(sql)
    # cursor.execute(sql)
    # results = cursor.fetchall()
    results = db.selectALL(sql)
    if results:
     self.ui2 = InfoManage()
     self.ui2.show()
     self.close()
    else:
     OK = QMessageBox.warning(self, ("警告"), ("""账号或密码错误!"""))

   elif identity == '2':
    sql = "select * from administrater where username = '" + name + "' and " \
                    "password = '" + pwd + "' and identity= '" + identity + "' "
    print(sql)

    results = db.selectALL(sql)
    # print(identity)

    if results:
     self.uu = SeatManage()
     self.uu.exec()
     self.close()
    else:
     OK = QMessageBox.warning(self, ("警告"), ("""账号或密码错误!"""))
   elif name == 'admin' and pwd == '123' and identity == '3':
    self.a = Admin()
    self.a.show()
    self.close()



  else:
   if name == '':
    OK = QMessageBox.warning(self, ("警告"), ("""请输入账号!"""))
   if pwd == '':
    OK = QMessageBox.warning(self, ("警告"), ("""请输入密码!"""))
  # cursor.close()
  # conn.close()
 def slotRegister(self):
  self.i = reUi() # self.i的窗口命名不能重复
  self.i.exec_()


if __name__ == '__main__':
 app = QtWidgets.QApplication(sys.argv)
 my = Login()
 my.show()
 sys.exit(app.exec_())

界面类:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_login_Ui(object):
 def setupUi(self, login_Ui):
  login_Ui.setObjectName("login_Ui")
  login_Ui.resize(581, 533)
  self.gridLayoutWidget = QtWidgets.QWidget(login_Ui)
  self.gridLayoutWidget.setGeometry(QtCore.QRect(160, 330, 295, 141))
  self.gridLayoutWidget.setObjectName("gridLayoutWidget")
  self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
  self.gridLayout.setContentsMargins(0, 0, 0, 0)
  self.gridLayout.setObjectName("gridLayout")
  self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
  self.horizontalLayout_2.setObjectName("horizontalLayout_2")
  self.loginButton = QtWidgets.QPushButton(self.gridLayoutWidget)
  self.loginButton.setObjectName("loginButton")
  self.horizontalLayout_2.addWidget(self.loginButton)
  self.registerButton = QtWidgets.QPushButton(self.gridLayoutWidget)
  self.registerButton.setObjectName("registerButton")
  self.horizontalLayout_2.addWidget(self.registerButton)
  self.pushButton = QtWidgets.QPushButton(self.gridLayoutWidget)
  self.pushButton.setObjectName("pushButton")
  self.horizontalLayout_2.addWidget(self.pushButton)
  self.gridLayout.addLayout(self.horizontalLayout_2, 4, 1, 1, 1)
  self.userlineEdit = QtWidgets.QLineEdit(self.gridLayoutWidget)
  self.userlineEdit.setObjectName("userlineEdit")
  self.gridLayout.addWidget(self.userlineEdit, 0, 1, 1, 1)
  self.userLabel = QtWidgets.QLabel(self.gridLayoutWidget)
  self.userLabel.setObjectName("userLabel")
  self.gridLayout.addWidget(self.userLabel, 0, 0, 1, 1)
  self.labelTip = QtWidgets.QLabel(self.gridLayoutWidget)
  self.labelTip.setObjectName("labelTip")
  self.gridLayout.addWidget(self.labelTip, 3, 1, 1, 1)
  self.pwdlineEdit = QtWidgets.QLineEdit(self.gridLayoutWidget)
  self.pwdlineEdit.setObjectName("pwdlineEdit")
  self.gridLayout.addWidget(self.pwdlineEdit, 1, 1, 1, 1)
  self.pwdlabel = QtWidgets.QLabel(self.gridLayoutWidget)
  self.pwdlabel.setObjectName("pwdlabel")
  self.gridLayout.addWidget(self.pwdlabel, 1, 0, 1, 1)
  self.comboBox = QtWidgets.QComboBox(self.gridLayoutWidget)
  self.comboBox.setObjectName("comboBox")
  self.comboBox.addItem("")
  self.comboBox.addItem("")
  self.comboBox.addItem("")
  self.comboBox.addItem("")
  self.gridLayout.addWidget(self.comboBox, 2, 1, 1, 1)
  self.label = QtWidgets.QLabel(self.gridLayoutWidget)
  self.label.setObjectName("label")
  self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
  self.label_2 = QtWidgets.QLabel(login_Ui)
  self.label_2.setGeometry(QtCore.QRect(-10, 0, 601, 321))
  self.label_2.setText("")
  self.label_2.setObjectName("label_2")

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

 def retranslateUi(self, login_Ui):
  _translate = QtCore.QCoreApplication.translate
  login_Ui.setWindowTitle(_translate("login_Ui", "Form"))
  self.loginButton.setText(_translate("login_Ui", "登 陆"))
  self.registerButton.setText(_translate("login_Ui", "注 册"))
  self.pushButton.setText(_translate("login_Ui", "找回密码"))
  self.userLabel.setText(_translate("login_Ui", " 账 户"))
  self.labelTip.setText(_translate("login_Ui", "密码或用户名错误"))
  self.pwdlabel.setText(_translate("login_Ui", " 密 码"))
  self.comboBox.setItemText(0, _translate("login_Ui", "财务管理员"))
  self.comboBox.setItemText(1, _translate("login_Ui", "信息管理员"))
  self.comboBox.setItemText(2, _translate("login_Ui", "停车场管理员"))
  self.comboBox.setItemText(3, _translate("login_Ui", "超级管理员"))
  self.label.setText(_translate("login_Ui", " 请选择"))

具体代码:pyqt5实现登录界面

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Pycharm设置去除显示的波浪线方法
Oct 28 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
pycharm 将python文件打包为exe格式的方法
Jan 16 Python
python创造虚拟环境方法总结
Mar 04 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
python3 os进行嵌套操作的实例讲解
Nov 19 Python
selenium+python实现基本自动化测试的示例代码
Jan 27 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 Python
Django实现单用户登录的方法示例
Mar 28 #Python
pyqt5实现登录界面的模板
May 30 #Python
python实现AES加密和解密
Mar 27 #Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 #Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 #Python
Pandas读写CSV文件的方法示例
Mar 27 #Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 #Python
You might like
php 生成饼图 三维饼图
2009/09/28 PHP
php文件上传的简单实例
2013/10/19 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
php cli配置文件问题分析
2015/10/15 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
JavaScript中常用的运算符小结
2012/01/18 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
Python变量作用范围实例分析
2015/07/07 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
基于python实现对文件进行切分行
2020/04/26 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
银行演讲稿范文
2014/01/03 职场文书
暑期教师培训方案
2014/06/07 职场文书
2015年体育部工作总结
2015/04/02 职场文书
环保证明
2015/06/23 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
python+opencv实现视频抽帧示例代码
2021/06/11 Python