欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt5?QLineEdit校驗(yàn)器限制輸入實(shí)例代碼

 更新時(shí)間:2023年05月27日 08:53:25   作者:weixin_48668114  
QLineEdit類是一個(gè)單行文本控件,可輸入單行字符串,可以設(shè)置回顯模式(Echomode)和掩碼模式,下面這篇文章主要給大家介紹了關(guān)于PyQt5?QLineEdit校驗(yàn)器限制輸入的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

校驗(yàn)器含義

Qvalidator 校驗(yàn)器用于檢驗(yàn)用戶輸入的數(shù)據(jù)的合法性。如果一個(gè)輸入框設(shè)置了校驗(yàn)器,到時(shí)用戶在文本框中輸入內(nèi)容時(shí),首先會將內(nèi)容傳遞給驗(yàn)證器進(jìn)行驗(yàn)證,如果輸入框結(jié)束輸入后,上述的驗(yàn)證狀態(tài)并非有效,則不允許輸入。

編輯框或者其他輸入控件 可以通過類似于SetValidator來指定驗(yàn)證器。

QValidator 是一個(gè)抽象類,有一些子類:

  • QIntValidator設(shè)置合法 int
    • 可以設(shè)置其range,setRange()
  • QDoubleValidator 設(shè)置合法 Double
    • 可以設(shè)置range setRange, ,小數(shù)點(diǎn)后位數(shù)setDecimals
  • QRegExpValidator 是用來結(jié)合正則表達(dá)式,判斷合法性
    -利用正則表達(dá)式自由發(fā)揮
    • QRegExp, PyQt中的正則表達(dá)式類,設(shè)置正則表達(dá)式對象
    • setRegExp,指定校驗(yàn)器的正則表達(dá)式

系統(tǒng)校驗(yàn)器子類舉例

from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIntValidator, QDoubleValidator, QRegExpValidator
from PyQt5.QtCore import QRegExp
import sys

class QLineEditorValidator(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.setWindowTitle("校驗(yàn)器")
        form_layout = QFormLayout()
        int_line = QLineEdit()
        double_line = QLineEdit()
        re_line = QLineEdit()
        int_line.setPlaceholderText("整形數(shù)據(jù)")
        double_line.setPlaceholderText("浮點(diǎn)數(shù)據(jù)")
        re_line.setPlaceholderText("正則數(shù)據(jù)")
        form_layout.addRow("整形數(shù)據(jù)", int_line)
        form_layout.addRow("浮點(diǎn)數(shù)據(jù)", double_line)
        form_layout.addRow("正則數(shù)據(jù)", re_line)

        int_validator = QIntValidator()
        int_validator.setRange(1, 10)

        double_validator = QDoubleValidator()
        double_validator.setRange(-360, 360)
        double_validator.setDecimals(2)

        re_validator = QRegExpValidator()
        reg = QRegExp("^[a-zA-Z0-9]+$")
        re_validator.setRegExp(reg)

        int_line.setValidator(int_validator)
        double_line.setValidator(double_validator)
        re_line.setValidator(re_validator)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = QLineEditorValidator()
    win.show()
    sys.exit(app.exec_())

自定義抽象類

由于 QValidator 有一個(gè)純虛函數(shù) validate.所以必須要寫一個(gè)類來繼承,然后實(shí)現(xiàn)這個(gè)純虛函數(shù)才行。

def validate(self, input_str, input_int):
        # input_str是輸入的內(nèi)容
        # input_int是光標(biāo)的位置
        ....

返回State有三種狀態(tài)

  • QValidator.Invalid:輸入是不允許的
  • QValidator.Intermediate ,處在中間狀態(tài),還無法判斷。需要后續(xù)。
  • QValidator.Acceptable,輸入是允許的
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("驗(yàn)證器的使用")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        le = QLineEdit()
        le.move(100, 100)
        # 18-180
        # QValidator不能直接用,而是用一個(gè)子類來繼承,然后實(shí)體化
        # 因此上面寫了一個(gè)新的AgeValidator繼承于QValidator
        validator1 = ScoreValidator()
        le.setValidator(validator1)

        le2 = QLineEdit()
        le2.move(200, 200)
        fm_layout = QFormLayout(self)
        fm_layout.addRow("輸入年齡", le)
        fm_layout.addRow("打醬油行", le2)

class ScoreValidator(QValidator):
    def validate(self, input_str, input_int):
        # input_str: 輸入框中的已有內(nèi)容
        # input_int: 光標(biāo)的位置
        print(f"當(dāng)前數(shù)值是:{input_str}, 是第{input_int}個(gè)字符")

        try:
            if 60 <= int(input_str) <= 100:
                # 需要有一個(gè)返回值
                return QValidator.Acceptable, input_str, input_int  # 返回驗(yàn)證通過
            elif 5 <= int(input_str) < 60:
                return QValidator.Intermediate, input_str, input_int  # 返回驗(yàn)證中間狀態(tài),不做響應(yīng)
            else:
                return QValidator.Invalid, input_str, input_int  # 返回驗(yàn)證不通過
        except:
            if len(input_str) == 0:
                return QValidator.Intermediate, input_str, input_int  # 返回驗(yàn)證中間狀態(tài),不做響應(yīng)
            return QValidator.Invalid, input_str, input_int  # 返回驗(yàn)證不通過

# 方便在模板里進(jìn)行調(diào)試
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

總結(jié)

到此這篇關(guān)于PyQt5 QLineEdit校驗(yàn)器限制輸入的文章就介紹到這了,更多相關(guān)PyQt5 QLineEdit校驗(yàn)器限制輸入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解python的變量緩存機(jī)制

    詳解python的變量緩存機(jī)制

    這篇文章主要介紹了python的變量緩存機(jī)制,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Python迅速掌握語音識別之知識儲備篇

    Python迅速掌握語音識別之知識儲備篇

    語音識別是一門交叉學(xué)科。近二十年來,語音識別技術(shù)取得顯著進(jìn)步,開始從實(shí)驗(yàn)室走向市場。人們預(yù)計(jì),未來10年內(nèi),語音識別技術(shù)將進(jìn)入工業(yè)、家電、通信、汽車電子、醫(yī)療、家庭服務(wù)、消費(fèi)電子產(chǎn)品等各個(gè)領(lǐng)域
    2021-11-11
  • python中利用numpy.array()實(shí)現(xiàn)倆個(gè)數(shù)值列表的對應(yīng)相加方法

    python中利用numpy.array()實(shí)現(xiàn)倆個(gè)數(shù)值列表的對應(yīng)相加方法

    今天小編就為大家分享一篇python中利用numpy.array()實(shí)現(xiàn)倆個(gè)數(shù)值列表的對應(yīng)相加方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python 把數(shù)據(jù) json格式輸出的實(shí)例代碼

    python 把數(shù)據(jù) json格式輸出的實(shí)例代碼

    下面小編就為大家?guī)硪黄猵ython 把數(shù)據(jù) json格式輸出的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • Python變量作用范圍實(shí)例分析

    Python變量作用范圍實(shí)例分析

    這篇文章主要介紹了Python變量作用范圍,實(shí)例分析了Python中變量的定義與相關(guān)作用域,是Python學(xué)習(xí)中非常重要的基本技巧,需要的朋友可以參考下
    2015-07-07
  • 教你如何將 Sublime 3 打造成 Python/Django IDE開發(fā)利器

    教你如何將 Sublime 3 打造成 Python/Django IDE開發(fā)利器

    Sublime Text 是一款非常強(qiáng)大的文本編輯器, 下面我們介紹如何將 Sublime Text 3 打造成一款 Python/Django 開發(fā)利器:
    2014-07-07
  • python中關(guān)于for循環(huán)的碎碎念

    python中關(guān)于for循環(huán)的碎碎念

    這篇文章主要介紹了python中關(guān)于for循環(huán)使用過程中的碎碎念,需要的朋友可以參考下
    2017-06-06
  • PyTorch中Tensor的數(shù)據(jù)統(tǒng)計(jì)示例

    PyTorch中Tensor的數(shù)據(jù)統(tǒng)計(jì)示例

    今天小編就為大家分享一篇PyTorch中Tensor的數(shù)據(jù)統(tǒng)計(jì)示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例

    Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python中的二維列表使用及說明

    Python中的二維列表使用及說明

    這篇文章主要介紹了Python中的二維列表使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論