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

Posted Bruceoxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《PyQT5软件开发 - 控件篇》第3章 单行文本框QLineEdit相关的知识,希望对你有一定的参考价值。

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

3.1简介

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

QLineEdit类中常用信号如下:

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

3.2 QLineEdit实例

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

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

# -*- 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、日期等地方用到,用于限定输入格式。掩码由掩码字符与分隔符字符串组成,后面可以跟一个分号和空白字符。

常用掩码示例如下:




资源获取方法

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


欢迎访问我的网站

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

以上是关于《PyQT5软件开发 - 控件篇》第3章 单行文本框QLineEdit的主要内容,如果未能解决你的问题,请参考以下文章

《PyQT5软件开发 - 控件篇》第1章 按钮-1(QPushButton)

《PyQT5软件开发 - 控件篇》第2章 按钮-2(QRadioButton, QCheckBox, QToolButton)

《PyQT5软件开发 - 基础篇》第2章 PyQt5基本功能

《PyQT5软件开发》第3章 PyQt5布局管理

《PyQT5软件开发 - 基础篇》第1章 PyQt5简介

《PyQT5软件开发 - 基础篇》第4章 PyQt5菜单和工具栏