当前位置:   article > 正文

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

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_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
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_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

输出模式:

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

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

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

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

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

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

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

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

    setValidator(QValidator)  # 设置验证器
    setInputMask(mask_str)  # 掩码验证
    hasAcceptableInput()  # 判定输入文本是否通过验证
    
    • 1
    • 2
    • 3
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_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/1017118
推荐阅读
相关标签
  

闽ICP备14008679号