QLineEdit的文本输出模式有四种,通过setEchoMode来设置。分别为不输出、正常输出、密文形式、编辑时明文结束时密文。类似QQ登陆界面,就是典型案例。本文也写了一个登陆界面的例子。

setEchoMode设置文本框模式

  • setEchoMode(QLineEditEchoMode):设置模式

    QLineEditEchoMode的值:

    • NoEcho = 1 :不输出
    • Normal = 0 :正常输出
    • Password = 2 :密文形式
    • PasswordEchoOnEdit = 3:编辑时明文结束时密文
  • echoMode():查看当前的模式

NoEcho = 1 不输出的模式下,那么输入的内容到底有没有输入进去呢?

正确答案是,即便没有显示,实际上也是输入进去的,只是看不见而已!

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
import sys

# 创建一个应用
app = QApplication(sys.argv)
print(sys.argv)


# 创建一个QWidget类的窗口
window = QWidget()
window.setWindowTitle("QLineEdit")  # 标题
window.resize(500, 500)                     # 窗口的大小
window.move(400, 200)                       # 窗口初次显示的位置

# 创建其他控件
le = QLineEdit(window)
le.setText("52txr")
le.setEchoMode(QLineEdit.NoEcho)   # 设置为不输出类型

# 验证insert
btn = QPushButton(window)
btn.setText("按钮,验证insert")
btn.move(100, 100)
btn.pressed.connect(lambda: le.insert("new"))  # 光标在哪,点击按钮后就在哪新增

btn2 = QPushButton(window)
btn2.setText("获取文本")
btn2.move(100, 200)
btn2.pressed.connect(lambda: print(le.text()))  # 光标在哪,点击按钮后就在哪新增

window.show()                               # 显示窗口,不然啥也没有

sys.exit(app.exec_())

这个我还是在ubuntu里终端输入密码时候见过这个操作。对密码的加密更加严格了,就是什么也不显示!

下面是其他的几个模式的演示:

其他几个模式

模拟用户登陆案例

创建一个窗口,添加两个文本框和一个按钮。

一个文本框是明文的,用于输入用户名。另一个是密文的,用于输入密码。

点击登陆按钮之后,获取账号和密码,并进行账号密码信息的比对。当密码正确的时候(账号52txr密码666666),提示登陆成功。当密码错误的时候,提示密码错误,并清除账号和密码。

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("用户登陆案例")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        widget_w = 150
        widget_h = 40
        margin = 60
        # 添加三个控件
        account = QLineEdit(self)
        pwd = QLineEdit(self)
        pwd.setEchoMode(QLineEdit.Password)
        login = QPushButton(self)
        login.setText("登  陆")

        account.resize(widget_w, widget_h)
        pwd.resize(widget_w, widget_h)
        login.resize(widget_w, widget_h)

        x = (self.width() - widget_w) / 2
        account.move(x, self.height() / 5)
        pwd.move(x, account.y() + widget_h + margin)
        login.move(x, pwd.y() + widget_h + margin)

        def cao():
            # print("按钮被按下")
            account_text = account.text()
            pwd_text = pwd.text()
            if account_text == "52txr":
                if pwd_text == "666666":
                    print("登陆成功")
                else:
                    print("密码错误")
                    account.setText("")
            else:
                print("账号不正确")
                pwd.setText("")

        login.clicked.connect(cao)


# 方便在模板里进行调试
if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/setEchoMode.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 08 月 21 日
如果觉得我的文章对你有用,请随意赞赏