pyqt5 登录界面界面的设计(多窗口的设计)
首先用qtdesigner设计界面(一律选择widget)
如何配置Pyqt5参考从零开始 使用PyQt5
拖动按钮、label等控件创建创建窗口:
Ctrl+s 保存为.ui文件
点击文件右击选择PyUIC再转换为.py文件
添加程序入口
import sys# 主方法,程序从此处启动PyQt设计的窗体
if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow() # 创建窗体对象ui = Ui_Form() # 创建PyQt设计的窗体对象ui.setupUi(MainWindow) # 调用PyQt窗体的方法对窗体对象进行初始化设置MainWindow.show() # 显示窗体sys.exit(app.exec_()) # 程序关闭时退出进程
运行结果如图所示
主要要理解和自己设置的代码
self.pushButton_2.clicked.connect(Form.close)# self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999)) # 设置输入密码行8位输入方式1self.lineEdit_2.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp('^\d{8}'))) # 设置输入密码行8位输入方式2self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password) # 设置隐藏密码输入self.pushButton.setIcon(QIcon(QPixmap('login.ico'))) # 设置登录按钮显示图标self.pushButton.clicked.connect(self.login) # 绑定登录函数self.pushButton.setShortcut('ctrl+d') # 设置登录快捷键self.pushButton_2.setShortcut('Ctrl+q') # 设置退出快捷键self.pushButton_2.setIcon(QIcon(QPixmap('exit.ico'))) # 设置退出图标# 设置系统左上角运行图标icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap('apple.ico'), QtGui.QIcon.Normal, QtGui.QIcon.Off)MainWindow.setWindowIcon(icon)QtCore.QMetaObject.connectSlotsByName(Form)def login(self):print('进入登录函数')from PyQt5.QtWidgets import QMessageBox# 使用information()方法弹出消息提示框QMessageBox.information(MainWindow, '登录消息', '用户名: ' + self.lineEdit.text() + ' 密码: '+ self.lineEdit_2.text(), QMessageBox.Ok)
全部代码
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file '系统登录.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
from PyQt5.Qt import *
from PyQt5.QtGui import QPixmap, QIconclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(340, 230)self.label = QtWidgets.QLabel(Form)self.centralwidget = QtWidgets.QWidget(MainWindow)self.label.setGeometry(QtCore.QRect(30, 50, 70, 15))self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(30, 100, 70, 15))self.label_2.setObjectName("label_2")self.lineEdit = QtWidgets.QLineEdit(Form)self.lineEdit.setGeometry(QtCore.QRect(120, 50, 170, 20))self.lineEdit.setObjectName("lineEdit")self.lineEdit_2 = QtWidgets.QLineEdit(Form)self.lineEdit_2.setGeometry(QtCore.QRect(120, 100, 170, 20))self.lineEdit_2.setObjectName("lineEdit_2")self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(30, 160, 90, 30))self.pushButton.setObjectName("pushButton")self.pushButton_2 = QtWidgets.QPushButton(Form)self.pushButton_2.setGeometry(QtCore.QRect(200, 160, 90, 30))self.pushButton_2.setObjectName("pushButton_2")self.retranslateUi(Form)self.pushButton_2.clicked.connect(Form.close)# self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999)) # 设置输入密码行8位输入方式1self.lineEdit_2.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp('^\d{8}'))) # 设置输入密码行8位输入方式2self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password) # 设置隐藏密码输入self.pushButton.setIcon(QIcon(QPixmap('login.ico'))) # 设置登录按钮显示图标self.pushButton.clicked.connect(self.login) # 绑定登录函数self.pushButton.setShortcut('ctrl+d') # 设置登录快捷键self.pushButton_2.setShortcut('Ctrl+q') # 设置退出快捷键self.pushButton_2.setIcon(QIcon(QPixmap('exit.ico'))) # 设置退出图标# 设置系统左上角运行图标icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap('apple.ico'), QtGui.QIcon.Normal, QtGui.QIcon.Off)MainWindow.setWindowIcon(icon)QtCore.QMetaObject.connectSlotsByName(Form)def login(self):print('进入登录函数')from PyQt5.QtWidgets import QMessageBox# 使用information()方法弹出消息提示框QMessageBox.information(MainWindow, '登录消息', '用户名: ' + self.lineEdit.text() + ' 密码: '+ self.lineEdit_2.text(), QMessageBox.Ok)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "系统登录"))self.label.setText(_translate("Form", "用户名:"))self.label_2.setText(_translate("Form", "密 码:"))self.pushButton.setText(_translate("Form", "登录"))self.pushButton_2.setText(_translate("Form", "退出"))import sys# 主方法,程序从此处启动PyQt设计的窗体
if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow() # 创建窗体对象ui = Ui_Form() # 创建PyQt设计的窗体对象ui.setupUi(MainWindow) # 调用PyQt窗体的方法对窗体对象进行初始化设置MainWindow.show() # 显示窗体sys.exit(app.exec_()) # 程序关闭时退出进程
图标文件这里上传不了
自己上网随便搜索一下图标库选择自己喜欢的,自己下载。文件名对应了在系统登录文件同级文件目录下即可
运行显示如下:
再设计一个窗口就是登录后的主界面
按钮绑定一个slot函数,再生成,ui文件转成.py文件
然后再生成另外一个文件run.py 代码如下:
# -*-coding: UTF-8
# @Time : 2021/9/13 22:25
# @Author : Cooper
# @FileName: rundamo.py
# @Software: PyCharm
import sys
import maindemo as u1
import second as u2
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
from PyQt5.QtGui import QPixmap, QIconclass SecondWindow(QMainWindow):def __init__(self):super(SecondWindow, self).__init__()super().__init__()self.ui = u2.Ui_Form()self.ui.setupUi(self)def slot2(self):win.show()win2.close()class MainWindow(QMainWindow):def __init__(self, parent=None):super(MainWindow, self).__init__(parent) # 使用父类的初始化方法来初始化子类,也就是说,子类继承了父类的所有属性和方法。父类属性自然会用父类方法来进行初始化。icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap('apple.ico'), QtGui.QIcon.Normal, QtGui.QIcon.Off)MainWindow.setWindowIcon(self, icon)self.ui = u1.Ui_Form()self.ui.setupUi(self)def slot1(self):print('进入函数')if self.ui.lineEdit.text() == "mingri":print('账号存在')if self.ui.lineEdit_2.text() == '123456':print('密码正确')if self.ui.radioButton.isChecked():win2.show()win.close()else:# self.ui.lineEdit.clear()self.ui.lineEdit_2.clear()win2.show()win.close()else:from PyQt5.QtWidgets import QMessageBox# 使用information()方法弹出消息提示框QMessageBox.information(QtWidgets.QMainWindow(), '登录消息', '密码错误 请重新输入', QMessageBox.Ok)# self.ui.lineEdit_2.setText('密码错误请重新输入')else:print('进入else')self.ui.lineEdit.setText('账号错误请重新输入')if __name__ == "__main__":app = QApplication(sys.argv)win = MainWindow()win.show()win2 = SecondWindow()sys.exit(app.exec_())
这里需要注意下
import maindemo as u1
import second as u2
maindemo是系统登录文件
second是第二个生成的文件
记得把文件改名放在同级目录下
系统登录文件有一点修改
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file '系统登录.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
from PyQt5.Qt import *
from PyQt5.QtGui import QPixmap, QIconclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(340, 230)self.label = QtWidgets.QLabel(Form)MainWindow = QtWidgets.QMainWindow()self.centralwidget = QtWidgets.QWidget(MainWindow)self.label.setGeometry(QtCore.QRect(30, 30, 70, 15))self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(30, 80, 70, 15))self.label_2.setObjectName("label_2")self.lineEdit = QtWidgets.QLineEdit(Form)self.lineEdit.setGeometry(QtCore.QRect(120, 30, 170, 20))self.lineEdit.setObjectName("lineEdit")self.lineEdit_2 = QtWidgets.QLineEdit(Form)self.lineEdit_2.setGeometry(QtCore.QRect(120, 80, 170, 20))self.lineEdit_2.setObjectName("lineEdit_2")self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)# self.lineEdit_2.setValidator(QtGui.QIntValidator(10000000, 99999999))self.lineEdit_2.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp('^\d{8}')))self.radioButton = QtWidgets.QRadioButton(Form)self.radioButton.setGeometry(QtCore.QRect(30, 120, 120, 30))self.radioButton.setObjectName("radioButton")self.radioButton_2 = QtWidgets.QRadioButton(Form)self.radioButton_2.setGeometry(QtCore.QRect(200, 120, 120, 30))self.radioButton_2.setObjectName("radioButton_2")self.pushButton = QtWidgets.QPushButton(Form)# self.pushButton = QtWidgets.QPushButton('登录(&D)', self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(30, 160, 90, 30))self.pushButton.setObjectName("pushButton")self.pushButton.setIcon(QIcon(QPixmap('login.ico')))self.pushButton_2 = QtWidgets.QPushButton(Form)self.pushButton_2.setGeometry(QtCore.QRect(200, 160, 90, 30))self.pushButton_2.setObjectName("pushButton_2")self.pushButton_2.setIcon(QIcon(QPixmap('exit.ico')))self.retranslateUi(Form)self.pushButton.clicked.connect(Form.slot1)self.pushButton.setShortcut('alt+d')self.pushButton_2.clicked.connect(Form.close)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "系统登录"))self.label.setText(_translate("Form", "用户名:"))self.label_2.setText(_translate("Form", "密 码:"))self.pushButton.setText(_translate("Form", "登录"))self.pushButton_2.setText(_translate("Form", "退出"))self.radioButton.setText(_translate("Form", "记住密码"))self.radioButton_2.setText(_translate("Form", "自动登录"))import sys# 主方法,程序从此处启动PyQt设计的窗体
if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow() # 创建窗体对象ui = Ui_Form() # 创建PyQt设计的窗体对象ui.setupUi(MainWindow) # 调用PyQt窗体的方法对窗体对象进行初始化设置MainWindow.show() # 显示窗体sys.exit(app.exec_()) # 程序关闭时退出进程
有一个需要加一下
MainWindow = QtWidgets.QMainWindow()
如果有什么不懂再下面评论,细心为您解答!
pyqt5 登录界面界面的设计(多窗口的设计)相关推荐
- pyqt5登录界面设计——模仿qq登录界面,可登录注册(数据库)
pyqt5登录界面设计--模仿qq登录界面 一.简单易用的可直接登录的界面--账号密码程序写死 1.1.效果图: 1.2.视频效果图 3.代码说明 4.使用示例 5.全部源码见: 二.带数据库的可登录 ...
- 基于PyQt5实现第二界面或弹出界面(子窗口)
基于Python和PyQt5实现第二界面或弹出界面(子窗口) My Environment Python 3.x pyqt5 Qt designer PyUIC 各种轮子 实现方式 通过点击父窗口(主 ...
- 设计登陆窗口界面,当输入账号密码正确时,界面如图一所示,当输入账号密码有误时,界面如图二所示。 import java.awt.*; import java.awt.event.*; import
//设计登陆窗口界面,当输入账号密码正确时,界面如图一所示,当输入账号密码有误时,界面如图二所示. import java.awt.*; import java.awt.event.*; import ...
- 《OpenCv视觉之眼》Python图像处理二十三:OpenCV图像处理最终章之基于PyQt5的图像处理界面设计及功能实现
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
- 右侧按钮登录注册html,翻转式用户登录注册界面设计
这是一款非常实用的翻转式用户登录注册界面设计效果.该用户登录注册界面使用纯CSS3来制作,在用户点击登录和注册两个按钮时,登录和注册界面可以以水平翻转的方式来回切换,效果非常的酷. 制作方法 HTML ...
- c#网页设计 UI —登录注册界面
打包了资源设置了下载积分 突然发现比较自己下载过人家的设置积分 自己真是设置的最低分(/捂脸 )--初出茅庐 多多指教 这几天学过了c#知识点 前段时间做了坦克大战 最近写了个极简易的界面-包括页面 ...
- pyqt5如何循环遍历控件名_利用Python的PyQt5编写GUI界面教学,QT5还是比较难的
由于学校课程的项目,最近最近在学习如何利用Python语言和SQL Server编写一个读者图书借阅.查询管理的小程序.以此为契机吧,自己便开始了学习之路~ 这篇文章主要介绍自己如何使用PyQt5编写 ...
- pycharm pyqt5实现登陆界面_PyQt5可以实现界面和逻辑代码分离吗?大声说出你的答案!...
必须的!!! PyQt5作为最强大的Python GUI设计模块,小编在这里告诉大家:PyQt5可以实现界面与逻辑代码分离,实现非常简单,用处特别大! 初学者在学习PyQt5时,使用Qt Design ...
- matlab 雷达系统界面,基于Matlab的雷达系统仿真软件包设计与实现
0 引言 近些年来国际上相继发展了一些雷达仿真系统,而国内相控阵雷达系统和脉冲压缩雷达系统仿真软件的研究已经成为一个热点.对于一个复杂的雷达系统,系统建模与仿真技术是雷达系统设计和研究的一个重要 ...
- 利用pyqt5写个界面
利用pyqt5写个界面 一.python GUI开发工具有哪些 二.计件数据采集界面开发流程 2.1 软件安装 2.2 Qt Designer设计界面 2.3 .ui文件转.py文件 2.4 测试窗口 ...
最新文章
- Wireshark实验HTTP
- Caused by java.lang.UnsatisfiedLinkError Cannot load library
- Leetcode 167. 两数之和 II - 输入有序数组 解题思路及C++实现
- Oracle中nolog干什么用的,在oracle中,sqlplus / nolog是做什么用的
- 乐Phone:还原联想的联想
- 建信金融科技春季全国笔试卷B编程题
- keepalive 原理讲解
- linux中有fd set函数吗,LINUX下FD_SET介绍
- 浏览器兼容性问题解决方案之CSS——已在IE、FF、Chrome测试
- 我为什么离开德国顶级传统大厂IT部
- Windows 环境变量设置工具
- [转载] Python3 日历(Calendar)模块介绍
- python调用activateMQ进行数据传输
- MBR分析(1): 代码获取与初始化
- TOPSIS综合评价模型
- 菜鸟学R语言(组间多重比较)
- android 开游艇游戏,游艇狂飙游戏-游艇狂飙安卓版预约_第一手游网
- error: server certificate verification failed 问题
- Lenovo 拯救者15ISK升级BIOS
- 蓝屏0x000000A5解决方案
热门文章
- 印度最高海拔学校借助LiFi 实现互联网体验
- 期刊(ECAI)投稿论文排版——LATEX
- 2018 北京化工大学ACCA精英班招生简章
- ios android 搬家,Android小心了 苹果推出iOS“搬家”工具
- python编写代码购买飞机票_12306订票代码--python订票的另类方式
- 批处理入门手册之批处理常用DOS命令篇(md、rd、ren、move)
- 武大计算机学院2017年博士分数线,武汉大学高等研究院2017年博士研究生综合考核录取工作通知...
- 程序员是干什么的呢?
- ctf_BUUCTF_web(1)
- Java练习:计算中国人民共和国成立了多少天