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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章