文本框是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的知乎