Qt—文本框

QLineEdit(单行文本框)

QLineEdit是指单行文本框控件,只可输入单行字符串,若想输入多行,则可使用QTextEdit
常用方法
在这里插入图片描述
一般情况下,我们需要限制文本框的输入内容,比如纯数字,或者纯字母,在这种情况下,我们采取正则表达式+掩码的方法进行,下面列出了掩码的占位符以及字面符,并给出了QLineEdit使用的常用信号
在这里插入图片描述
实例

1.文本框输入显示格式
# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication,QLineEdit,QWidget,QFormLayout
from PyQt5.QtGui import QPixmap,QPalette
# QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,可以进行,贴图,添加控件颜色的作用
#QPalette是Qt中的一个调色板类,用于美化界面
from PyQt5.QtCore import Qt

class WinDemo(QWidget):
    def __init__(self,parent=None):
        super(WinDemo,self).__init__(parent)
        self.setWindowTitle("QLineEdit实例")
        flo=QFormLayout()
        #f分别创建四种文本框显示格式
        pNormal=QLineEdit()
        pNoEch=QLineEdit()
        pPass=QLineEdit()
        pPassEch=QLineEdit()

        #添加
        flo.addRow('Normal',pNormal)
        flo.addRow('NoEcho',pNoEch)
        flo.addRow('Password',pPass)
        flo.addRow('PassswordEchoOnEdit',pPassEch)

        ##设置setPlaceholderText()文本框浮现的文字
        pNormal.setPlaceholderText('默认')
        pNoEch.setPlaceholderText('不显示任何输入的字符')
        pPass.setPlaceholderText('显示密码掩码')
        pPassEch.setPlaceholderText('编辑时显示,编辑完成后密码掩码')

        #s设置显示效果
        pNormal.setEchoMode(QLineEdit.Normal)
        pNoEch.setEchoMode(QLineEdit.NoEcho)
        pPass.setEchoMode(QLineEdit.Password)
        pPassEch.setEchoMode(QLineEdit.PasswordEchoOnEdit)

        self.setLayout(flo)




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

效果
在这里插入图片描述
在这里插入图片描述

2.验证器setValidator的使用
# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication,QLineEdit,QWidget,QFormLayout
from PyQt5.QtGui import QIntValidator,QDoubleValidator,QRegExpValidator
from PyQt5.QtCore import QRegExp

class WinDemo(QWidget):
    def __init__(self,parent=None):
        super(WinDemo,self).__init__(parent)
        self.setWindowTitle("QLineEdit实例")
        flo=QFormLayout()
        #f分别创建三种文本框
        pInt=QLineEdit()
        pDouble=QLineEdit()
        pVali=QLineEdit()

        #添加
        flo.addRow('整型',pInt)
        flo.addRow('浮点型',pDouble)
        flo.addRow('字母和数字',pVali)

        ##设置setPlaceholderText()文本框浮现的文字
        pInt.setPlaceholderText('整型')
        pDouble.setPlaceholderText('浮点型')
        pVali.setPlaceholderText('字母和数字')

    #设置输入格式
        #设置整型范围
        pIntValidator=QIntValidator(self)
        pIntValidator.setRange(1,99)

        #设置浮点型范围,【-100,100】,保留2位小数
        pDoubleValidator=QDoubleValidator(self)
        pDoubleValidator.setRange(-100,100)
        pDoubleValidator.setNotation(QDoubleValidator.StandardNotation)
        pDoubleValidator.setDecimals(2)

        #字母和数字(限制规则按指定的正则表达式)
        reg=QRegExp("[a-zA-Z)-9]+$")
        pValidator=QRegExpValidator(self)
        pValidator.setRegExp(reg)

        #设置验证器
        pInt.setValidator(pIntValidator)
        pDouble.setValidator(pDoubleValidator)
        pVali.setValidator(pValidator)

        self.setLayout(flo)




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

在这里插入图片描述

3.掩码

若限制用户输入,除了使用验证器,还可以使用输入掩码的方式

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication,QLineEdit,QWidget,QFormLayout
from PyQt5.QtGui import QIntValidator,QDoubleValidator,QRegExpValidator
from PyQt5.QtCore import QRegExp

class WinDemo(QWidget):
    def __init__(self,parent=None):
        super(WinDemo,self).__init__(parent)
        self.setWindowTitle("掩码实例")
        flo=QFormLayout()
        #f分别创建三种文本框
        pIp=QLineEdit()
        pMac=QLineEdit()
        pDate=QLineEdit()
        pLicense= QLineEdit()

        pIp.setInputMask("000.000.000.000;_")
        pMac.setInputMask("HH:HH:HH:HH:HH:HH;_")
        pDate.setInputMask("0000-00-00")
        pLicense.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#")

        #添加
        flo.addRow('数字掩码',pIp)
        flo.addRow('Mac掩码',pMac)
        flo.addRow('日期掩码',pDate)
        flo.addRow("许可证掩码",pLicense)

        self.setLayout(flo)




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

在这里插入图片描述

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication,QLineEdit,QWidget,QFormLayout
from PyQt5.QtGui import QIntValidator,QDoubleValidator,QRegExpValidator,QFont
from PyQt5.QtCore import QRegExp,Qt

class WinDemo(QWidget):
    def __init__(self,parent=None):
        super(WinDemo,self).__init__(parent)
        self.setWindowTitle("综合实例")
        flo=QFormLayout()
        #e1显示文本使用自定义字体,右对齐,允许输入整数
        e1=QLineEdit()
        e1.setValidator(QIntValidator())#输入限制
        e1.setMaxLength(4)#设置最大输入位数
        e1.setAlignment(Qt.AlignRight)#设置对齐
        e1.setFont(QFont("Arial",20))#设置字体以及大小
        flo.addRow("integer validator", e1)

        #输入两位小数
        e2=QLineEdit()
        e2.setValidator(QDoubleValidator(0.99,99.99,2))
        flo.addRow("Double validator",e2)

        #输入电话号码
        e3=QLineEdit()
        e3.setInputMask('+99_9999_99999')#设置掩码
        flo.addRow("Input Mask",e3)

        #检测输入并发射信号
        e4=QLineEdit()
        e4.textChanged.connect(self.textchange)#检测到输入变化发射信号
        flo.addRow("Text Changed",e4)

        #输入密码,并当按下回车键时,程序执行
        e5=QLineEdit()
        e5.setEchoMode(QLineEdit.Password)
        flo.addRow("Password",e5)

        #只读模式
        e6=QLineEdit("Hello")
        e6.setReadOnly(True)
        flo.addRow("Read Only",e6)
        e5.editingFinished.connect(self.enterPress)

        self.setLayout(flo)
    def textchange(self,text):
        print("输入的内容为"+text)
    def enterPress(self):
        print("开始执行")



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

在这里插入图片描述
在这里插入图片描述

QTextEdit(多行文本框)

QTextEdit是一个多行文本框控件,可以显示多行文本内容,当文本内容超过控件显示范围时,可以显示水平个垂直滚动条,除了可以显示文本,还可以显示HTML文档
在这里插入图片描述
实例

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QPushButton,QTextEdit

class TextDemo(QWidget):
    def __init__(self,parent=None):
        super(TextDemo,self).__init__(parent)
        self.setWindowTitle("TextEdit实例")
        flo=QVBoxLayout()
        self.resize(300,270)
        self.textEdit=QTextEdit()
        self.btnPress1=QPushButton("显示文本")
        self.btnPress2=QPushButton("显示HTML")
        flo.addWidget(self.textEdit)
        flo.addWidget(self.btnPress1)
        flo.addWidget(self.btnPress2)
        self.setLayout(flo)

        #编辑按钮事件
        self.btnPress1.clicked.connect(self.btnPress1_Clicked)
        self.btnPress2.clicked.connect(self.btnPress2_Clicked)

    #设置编辑框中预显示的文本
    def btnPress1_Clicked(self):
            self.textEdit.setPlainText("Hello!\n单击按钮")

    def btnPress2_Clicked(self):
            #font标签,规定html字体、大小和颜色:
            self.textEdit.setHtml("<font color='red'  size='6'><red>Hello!\n单击按钮。</font>")

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

在这里插入图片描述

PS:观察上面的程序,注意到,在类中有的程序用到了self,有的则没有
而决定是否加self,则主要看变量在类中的作用,如果作为全局变量,那么就加self,而如果只是局部变量,就可考虑不加

python什么时候加self,什么时候不加self

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值