《PyQT5软件开发 – 控件篇》第3章 单行文本框QLineEdit

文本框是GUI界面中使用频率较高的控件,文本框又分为单行文本框和多行文本框,本文先讲单行文本框,单行文本框用途很广,比如密码账号密码框、搜索栏、路径地址栏等。

3.1简介

QLineEdit可以输入和显示文本信息,同时可以设置显示格式和文本框属性,QLineEdit类中常用的方法如下表所示。

oZNph4.md.png

QLineEdit类中常用信号如下:

oZNP39.md.png

textChanged(str)只要文字发生变化就会发出此信号。当通过调用setText()以编程方式更改文本时,也会发出此信号,而editingFinished()按下返回或回车键或线条编辑失去焦点时发出此信号。

3.2 QLineEdit实例

首先使用QT Designer拖几个控件,效果如下:

oZNEB6.md.png

接下来就是实现到逻辑代码。

# -*- coding: utf-8 -*-
"""
@file                mainMainpage.py
@author              BruceOu
@version             V1.0
@date                2021-11-25
@blog                https://blog.bruceou.cn/
@Official Accounts   嵌入式实验楼
@brief               MainWindow
"""
from PyQt5 import QtWidgets
from PyQt5.QtGui import QGuiApplication, QIcon, QDesktopServices, QFont
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox, QButtonGroup, QToolButton, QMenu, QAction
from PyQt5.QtCore import Qt,QUrl
import re 

from ui.ui_mainpage import Ui_MainWindow

## MainWindow
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):

    #init
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle('QRadioButton')

        self.setupUi(self)

        self.show()

        ## login ###############################################################################################
        ## user
        self.lineEditUser.setPlaceholderText('Please enter user name')

        self.lineEditUser.setStyleSheet("color:red")

        ## set font
        ## 方法一
        font = QFont()
        font.setFamily('微软雅黑')
        font.setBold(True)
        font.setPointSize(10)
        font.setWeight(75)
        self.lineEditUser.setFont(font)

        ## 方法二
        # self.lineEditUser.setFont(QFont('微软雅黑', 20))

        ## 设置用户名的最大输入为16
        self.lineEditUser.setMaxLength(16)

        ## Password
        self.lineEditPassword.setPlaceholderText('Please enter password')
        self.lineEditPassword.setEchoMode(QtWidgets.QLineEdit.Password)

        ## PasswordNoecho
        self.lineEditPasswordNoecho.setEchoMode(QtWidgets.QLineEdit.NoEcho)
        self.lineEditPasswordNoecho.setPlaceholderText('Please enter password')

        ## PasswordEchoOnEdit
        self.lineEditPasswordEchoOnEdit.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit)
        self.lineEditPasswordEchoOnEdit.setPlaceholderText('Please enter password')

        ## setting #############################################################################################
        # IP
        self.lineEditIP.setInputMask('000.000.000.000;_')

        self.lineEditMask.setInputMask('000.000.000.000;_')

        ### event
        self.lineEditPassword.editingFinished.connect(self.check_password)

        self.pushButtonLogin.clicked.connect(self.btn_clicked) ## 绑定按钮事件
        self.pushButtonSetting.clicked.connect(self.btn_clicked)

    def check_password(self):
        """
        Brief
        ----------
            check password

        Parameters
        ----------
            None

        Returns
        ----------
            None
        """        
        sender = self.sender()

        passwd = sender.text()
        if(len(passwd) < 6 or len(passwd) > 16):
            QMessageBox.warning(self, 'Warning','The password should be 6 - 16!')
        elif(None == re.match("^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])).*$" ,passwd)):
            QMessageBox.warning(self, 'Warning','Password must contain uppercase and lowercase letters and numbers!')
        else:
            pass

    def btn_clicked(self):
        """
        Brief
        ----------
            pushButton clicked

        Parameters
        ----------
            None

        Returns
        ----------
            None
        """
        sender = self.sender()

        if(sender == self.pushButtonLogin):
            QMessageBox.about(self, 'Login','User: {}, Password: {}, PasswordNoecho: {}, PasswordEchoOnEdit: {}'\
                              .format(self.lineEditUser.text(), self.lineEditPassword.text(), self.lineEditPasswordNoecho.text(), self.lineEditPasswordEchoOnEdit.text()))

        elif(sender == self.pushButtonSetting):
             QMessageBox.about(self, 'Setting','IP: {}, Mask: {}'\
                              .format(self.lineEditIP.text(), self.lineEditMask.text())) 

    def closeEvent(self, event):
        """
        Brief
        ----------
            Close Event

        Parameters
        ----------
            event

        Returns
        ----------
            None
        """
        event.accept()

【完整代码参考附件QLineEdit】

演示效果:

在这里插入图片描述

在这里插入图片描述

代码很简单,只是根据前面的API根据实际情况使用就可以了,下面就挑几个讲解了。

setPlaceholderText(str)表示设置行文本的提示文字,设置此属性将使行编辑显示一个灰色的占位符文本,当有输入文字时,提示文字就会消失。

setInputMask()用于设置掩码,主要在IP地址、License、日期等地方用到,用于限定输入格式。掩码由掩码字符与分隔符字符串组成,后面可以跟一个分号和空白字符。

常用掩码示例如下:

oZNmND.md.png


资源获取方法

1.扫描下面二维码,关注公众号[AI实验楼]
2.在公众号回复关键词[PyQt5]获取资料提取码

AI实验楼


欢迎访问我的网站

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书
BruceOu的知乎

Related posts

Leave a Comment