专栏首页编程创造城市Python高级进阶#020 pyqt5登录窗体实战,综合实践案例

Python高级进阶#020 pyqt5登录窗体实战,综合实践案例

知识回顾:

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_()

本文分享自微信公众号 - 编程创造城市(bcczcs),作者:刘金玉编程

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python高级进阶教程022期 pyqt5 qtimer实现图片轮播

    这里的超时的意思是:超时后,要执行什么代码。在timer中体现为去执行什么槽函数。

    刘金玉编程
  • Python高级进阶#006 pyqt5类封装

    刘金玉编程
  • Python高级进阶#015 pyqt5进度条QProgressBar结合使用qbasictimer

    这里我们在学习使用进度条的时候,必须要结合使用时钟控件,这样才能让我们看到进度条动的感觉。

    刘金玉编程
  • UIBarButtonItem设置Badge

    UIBarButtonItem 默认是不能 设置 Badge 所以我们可以对它扩展使之支持

    剑行者
  • python pyqt5 按钮 QRadioButton 常用

    import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.Qt...

    用户5760343
  • 【项目实践】中英文文字检测与识别项目(CTPN+CRNN+CTC Loss原理讲解)

    文字识别也是图像领域一个常见问题。然而,对于自然场景图像,首先要定位图像中的文字位置,然后才能进行文字的识别。

    OpenCV学堂
  • 词义类比与全局词共现信息不可兼得?基于飞桨实现的GloVe说可以

    通过飞桨核心框架复现的GloVe模型具有良好的性能表现。针对论文给出的训练文本,处理后文本总词量为17M,模型的训练时间在1000s左右,达到了快速训练词向量的...

    用户1386409
  • 小甲鱼《零基础学习Python》课后笔记(三十七):类和对象——面向对象编程

    1.当程序员不想把同一段代码写几次,他们发明了函数解决了这种情况。当程序员已经有了一个类,而又想建立一个非常接近的新类,他们会怎么做呢? 定义一个新类继承已有...

    小火柴棒
  • 用python写gui

    风之小云天
  • 庆祝法国队夺冠:用Python放一场烟花秀

    天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法国队夺冠,工作之余也可以随时让程序为自己放一场烟花秀...

    猫咪编程

扫码关注云+社区

领取腾讯云代金券