美文网首页
《PyQT5软件开发 - 控件篇》第3章 单行文本框QLineE

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

作者: BruceOu | 来源:发表于2021-11-26 22:41 被阅读0次

    文本框是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章 单行文本框QLineE

          本文链接:https://www.haomeiwen.com/subject/bytfxrtx.html