PyQt5 基本语法(四):输入控件

文章目录

2、 输入控件(一)

2.1 纯键盘

2.1.1 QLineEdit

2.1.1.1 描述

其是一个单行文本编辑器,允许用户输入和编辑单行纯文本,自带一组编辑功能

2.1.1.2 控件创建
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)

tx = QLineEdit("hello", w)  # hello 为文本输入框的默认值 setText("hello)
tx.setText("你好呀!")  # 设置文本内容
tx.insert("liuzhongkun")  # 在光标处插入文本内容
print(tx.text())  # 获取真实文本内容
print(tx.displayText())  # 获取展示的文本内容,如密码框获取的是点,而不是具体内容
w.show()
sys.exit(app.exec_())
2.1.1.3 输出模式
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
w = QWidget()
w.resize(500, 500)
te = QLineEdit(w)
te.setEchoMode(QLineEdit.NoEcho)  # 不显示输出的内容
print(te.echoMode())  # 获取输出模式

btn = QPushButton("提交", w)
btn.move(0, 40)
btn.clicked.connect(lambda: te.setEchoMode(QLineEdit.Normal))


w.show()
sys.exit(app.exec_())

输出模式:

  • NoEcho = 1:不输出
  • Normal = 0:正常输出
  • Password = 2:密文模式
  • PasswordEchoOnEdit = 3:编辑时明文,结束后密文
2.1.1.4 提示字符串
te.setPlaceholderText("这个提示语句")  # 设置提示语句
print(te.placeholderText())  # 获得提示语句

在用户输入文本之前,给用户的提示语句

文本框为空,显示提示文本;反之,隐藏提示文本

2.1.1.5 清空按钮
setClearButtonEnable(bool)  # 设置清空按钮
isClearButtonEnable()  # 获取是否有清空按钮
2.1.1.6 添加操作行为

比如,添加密码框的小眼睛

addAction(QAction, QLineEdit.ActionPosition)
# QLineEdit.ActionPosition: QLineEdit.LeadingPosition 按前面   QLineEdit.trailingPosition 按后面
action.triggered.connect(fn)  
addAction(QIcon, QLineEdit.ActionPosition)  # 返回操作动作
2.1.1.7 自动补全
comp = QCompleter(iterator, parent)  # 创建完成器
setCompleter(QCompleter)  # 设置完成器
completer()  # 获得完成器
2.1.1.8 输入限制
2.1.1.8.1 语法
  1. 内容长度限制

    setMaxLength(int)  # 设置限制输入的长度
    maxLength()  # 获取输入长度
    
  2. 只读限制

    setReadOnly(bool)  # 设置只读
    isReadOnly()  # 获取是否为只读
    
  3. 规则验证

    setValidator(QValidator)  # 设置验证器
    setInputMask(mask_str)  # 掩码验证
    hasAcceptableInput()  # 判定输入文本是否通过验证
    
2.1.1.8.2 掩码验证
  1. 含义:

    • 掩码可以指定固定位置的固定数据类型,达到一个格式上的限制
    • 例如ip地址:xxx: xxx: xxx: xxx
    • 掩码由一串掩码字符和分隔符组成,分隔符可选分号和空白符等
  2. 掩码字符

    输入字符 含义
    A ASCII字母字符是必须的,取值空间是A-Z,a-z
    a ASCII 字母字符是允许的但不是必须的
    N ASCII字母字符是必须的. A-Z, a-z, 0-9
    n ASCII 字母字符是允许的但不是必须的
    X 任何字符都可以,是必须需要的
    x 任何字符都允许的,但不是必须需要的
    9 ASCII 数字是必须要的. 0-9
    0 ASCII 数字是允许的,但不是必须要的
    D ASCII 数字是必须要的. 1-9
    d ASCII 数字是允许的,但不是必须要的 (1-9)
    # ASCII 数字是或加减符号允许的,但不是必须要的
    H 十六进制数据字符是必须要的. A-F, a-f, 0-9
    h 十六进制数据字符是允许的,但不是必须要的
    B 二进制数据字符是必须要的. 0-1
    b 二进制数据字符是允许的,但不是必须要的
    > 所有的字符字母都是大写的
    < 所有的字符字母都是小写的
    ! 关闭大小写
    \ 使用 \ 去转义上面的字符,如果再需要显示上述字符的时候
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    # @author: kun
    from PyQt5.Qt import *
    import sys
    
    
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(500, 500)
    tx = QLineEdit(w)
    tx.move(100, 100)
    tx.setPlaceholderText("请输入ip地址")
    tx.setInputMask("999:999:999:999;*")  # 设置掩码,另分隔符为 : 同时令空白字符为 *
    w.show()
    sys.exit(app.exec_())
    
2.1.1.9 案例:用户登录框
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: kun
from PyQt5.Qt import *
import hashlib


class AccountTool:
    # 将账号密码发送给服务器,验证账号密码的正确性,等待服务器返回结果
    # 状态码
    ACCOUNT_ERROR = -1
    PWD_ERROR = 1
    LOGIN_SUCCESS = 0

    @staticmethod
    def check_login(account, pwd):
        if account != "kun":
            return AccountTool.ACCOUNT_ERROR  # 账户错误返回 -1
        if pwd != '9fb144c4156ca8aa142b18f34e170a55':
            return AccountTool.PWD_ERROR  # 密码错误返回 1
        return AccountTool.LOGIN_SUCCESS  # 正确返回 0

    @staticmethod
    def encrypt_(pwd_encrypt):
        # 对密码,使用 md5 加密
        lis = ["我是md5加密", "我是md5二次加密"]  # 加盐
        for i in lis:
            temp = hashlib.md5(i.encode("utf-8"))
            temp.update(pwd_encrypt.encode("utf-8"))
            pwd_encrypt = temp.hexdigest()
        return pwd_encrypt


class Window(QWidget):

    def __init__(self):
        super().__init__()
        self.Account = "kun"
        self.Pwd = "123456"
        self.setWindowTitle("登录界面")  # 设置标题
        self.resize(500, 500)  # 设置窗口大小
        self.move(100, 100)  # 移动窗口
        self.setMinimumSize(400, 400)  # 限定窗口大小
        self.setMaximumSize(1000, 1000)
        self.setup_ui()  # 调用创建控件的方法

    def setup_ui(self):  # 添加控件的操作
        self.btn = QPushButton("登   录", self)  # 创建登录按钮
        self.btn.setEnabled(False)
        self.btn.pressed.connect(self.login_)

        self.acc = QLineEdit(self)  # 创建账号输入框
        self.acc.setPlaceholderText("请输入您的用户名")
        self.acc.textChanged.connect(self.btn_)  # 当文本框内容改变时,修改按钮状态
        self.acc.setClearButtonEnabled(True)

        self.pwd = QLineEdit(self)  # 创建密码输入框
        self.pwd.setPlaceholderText("请输入您的密码")
        self.pwd.setEchoMode(QLineEdit.Password)  # 不显示密码
        self.pwd.textChanged.connect(self.btn_)
        self.pwd.setClearButtonEnabled(True)

        # 创建动作
        self.action = QAction(self.pwd)
        self.action.setIcon(QIcon("./close.jpg"))
        self.action.triggered.connect(self.change_)

        self.label_acc = QLabel(self)
        self.label_acc.setVisible(False)
        self.label_pwd = QLabel(self)
        self.label_pwd.setVisible(False)

    def change_(self):
        if self.pwd.echoMode() == QLineEdit.Password:
            self.action.setIcon(QIcon("./open.jpg"))
            self.pwd.setEchoMode(QLineEdit.Normal)
        else:
            self.action.setIcon(QIcon("./close.jpg"))
            self.pwd.setEchoMode(QLineEdit.Password)

    def btn_(self):
        self.btn.setEnabled(len(self.pwd.text
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveKenny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值