Python高级进阶#020 pyqt5登录窗体实战,综合实践案例
- 2019 年 11 月 13 日
- 筆記
1.掌握菜单控件,调用类Qmainwindow
2.利用Qmenu的类型,由qmenubar来返回
3.点击情况:
子菜单addMenu。
直接点击事件addAction
本节知识视频教程
以下开始文字讲解:
一、案例:登录窗体
1.实现窗体的加载(有图标)
2.用户名和密码的登录框
3.能够将用户名和密码获取过来
二、开发过程
提问:开发思路中需要加载什么?
1.加载窗体Qwidget Qapplication
2.加载控件Qlabel,Qpushbutton,QLineEdit
3.加载提示框QMessagebox
想要让窗体加载时候居中的要点
前提是必须要知道窗体的自身的大小。
注意:窗体的大小最好先自定义好,采用resize方法,这样可以计算出来。
这里如果实现没有定义好大小,可能会出现不居中的情况。
如何使用密码框?
要求用符号代替显示,不能看见输入的内容。
我们通过设置qlineedit的输出模式echomode来配置。
举例:
self.lePassword.setEchoMode(QLineEdit.Password)
QLineEdit.Password表示密码模式。
窗体按钮的配置
为了显示更加友好,我们可以将不需要的按钮进行隐藏。
比如隐藏方法缩小按钮,只显示关闭按钮。
#隐藏放大缩小按钮
self.setWindowFlags(Qt.WindowCloseButtonHint)
退出应用程序
获取应用程序实例,直接使用exit方法退出。
QApplication.instance().exit()
登录与退出采用同一个槽进行处理的方法
def myBtnClick(self):
source=self.sender()
if source.text()=="登录":
pass
elif source.text()=="退出":
QApplication.instance().exit()
提示框的书写
这里我们直接提示信息方法。这样写的好处是直接可以加载消息,这是一种简略的配置。
QMessageBox.information(self,"消息","用户名:"+self.leUsername.text()+",密码:"+self.lePassword.text(),QMessageBox.Ok)
三、总结强调
1.掌握登录界面的开发思路
2.掌握密码模式的设置
3.掌握退出程序
4.掌握消息框的应用
本节知识源代码:
import sys from PyQt5.QtWidgets import QApplication,QWidget,QMessageBox,QLabel,QLineEdit,QPushButton,QFrame from PyQt5.QtGui import QIcon from PyQt5.QtCore import Qt class MyClass(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle("刘金玉编程") self.resize(300,200) self.move(desk.width()/2-self.width()/2,100) myframe=QFrame(self) lbl1=QLabel("用户名:",myframe) lbl2=QLabel("密 码:",myframe) lbl2.move(0,30) self.leUsername=QLineEdit(myframe) self.lePassword=QLineEdit(myframe) self.leUsername.move(50,0) self.lePassword.move(50,30) self.lePassword.setEchoMode(QLineEdit.Password) btnLogin=QPushButton("登录",myframe) btnQuit=QPushButton("退出",myframe) btnLogin.move(0,80) btnQuit.move(80,80) btnLogin.clicked.connect(self.myBtnClick) btnQuit.clicked.connect(self.myBtnClick) myframe.move(50,50) myframe.resize(300,300) #隐藏放大缩小按钮 self.setWindowFlags(Qt.WindowCloseButtonHint) self.show() def myBtnClick(self): source=self.sender() if source.text()=="登录": QMessageBox.information(self,"消息","用户名:"+self.leUsername.text()+",密码:"+self.lePassword.text(),QMessageBox.Ok) elif source.text()=="退出": QApplication.instance().exit() if __name__=="__main__": app=QApplication(sys.argv) app.setWindowIcon(QIcon("./img/liu.png")) desk=app.desktop() mc=MyClass() app.exec_()