1. 程式人生 > 程式設計 >python GUI庫圖形介面開發之PyQt5單行文字框控制元件QLineEdit詳細使用方法與例項

python GUI庫圖形介面開發之PyQt5單行文字框控制元件QLineEdit詳細使用方法與例項

PyQt5單行文字框控制元件QLineEdit介紹

QLineEdit類是一個單行文字框控制元件,可以輸入單行字串。

QLineEdit類中常用的方法如下表

方法 描述
setAlignment() 按固定值方式對齊文字
Qt.AlignLeft:水平方向靠左對齊
Qt.AlignRight:水平方向靠右對齊
Qt.AlignCenter:水平方向居中對齊
Qt.AlignJustify:水平方向調整間距兩端對齊
Qt.AlignTop:垂直方向靠上對齊
Qt.AlignBottom:垂直方向靠下對齊
Qt.AlignVCenter:垂直方向居中對齊
setEchoMode() 設定文字框的顯示格式,允許輸入的文字顯示格式的值可以是:
QLineEdit.Normal:正常顯示所輸入的字元,此為預設選項
QLineEdit.NoEcho:不顯示任何輸入的字元,常用於密碼型別的輸入,且長度保密
QLineEdit.Password:顯示與平臺相關的密碼掩飾字元,而不是實際輸入的字元
QLineEdit.PasswordEchoOnEdit:在編輯時顯示字元,負責顯示密碼型別的輸入
setPlaceholderText() 設定文字框顯示文字
setMaxLength() 設定文字框所允許輸入的最大字元數
setReadOnly() 設定文字為只讀
setText() 設定文字框的內容
text() 返回文字框的內容
setDragEnable() 設定文字框是否接受拖動
selectAll() 全選
setFocus() 得到焦點
setInputMask() 設定掩碼
setValidator() 設定文字框的驗證器(驗證規則),將限制任意可能輸入的文字,可用的校驗器為
QIntValidator:限制輸入整數
QDoubleValidator:限制輸入浮點數
QRegexpValidator:檢查輸入是否符合正則表示式

QLineEdit類中常用訊號如下

訊號 描述
selectionChanged 只要選擇改變了,這個訊號就會發射
textChanged 當修改文字內容時,這個訊號就會發射
editingFinished 當編輯文字結束時,這個訊號就會發射

定義輸入掩碼的字元

下表列出了輸入掩碼的佔位符和字面字元,並說明其如何控制資料輸入

字元 含義
A ASCII字母字元是必須輸入的(A-Z,a-z)
a ASCII字母字元是允許輸入的,但不是必須輸入的
N ASCII字母字元是必須輸入的(A-Z,a-z,0-9)
n ASCII字母字元是允許輸入的,但不是必須輸入的
X 任何字元都是必須輸入
x 任何字元都是允許輸入的,但不是必須輸入的
9 ASCII數字字元是必須輸入的(0-9)
0 ASCII數字字元是允許輸入的,但不是必須輸入的
D ASCII數字字元是必須輸入的(1-9)
d ASCII數字字元是允許輸入的,但不是必須的(1-9)
# ASCII數字字元與加減字元是允許輸入的,但不是必須的
H 十六進位制格式字元是必須輸入的(A-F,a-f,0-9)
h 十六進位制格式字元允許輸入,但不是必須的
B 二進位制格式字元是必須輸入的(0,1)
b 二進位制格式字元是允許輸入的,但不是必須的
> 所有字母字元都大寫
< 所有字母字元都小寫
關閉大小寫轉換
\ 使用‘\'轉義上面列出的字元

掩碼由掩碼字元與分隔符字串組成,後面可以跟一個分號和空白字元,空白字元在編輯後會從文字刪除的

掩碼示例如下:

掩碼 注意事項
000.000.000.000;_ ip地址,空白字元是‘_'
HH:HH:HH:HH:HH:HH; MAC地址
0000-00-00 日期,空白字元是空格
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# 許可證號,空白字元是‘_',所有字母都轉換為大寫

EchoMode的顯示效果

from PyQt5.QtWidgets import QApplication,QLineEdit,QWidget,QFormLayout
import sys

class lineEditDemo(QWidget):
  def __init__(self,parent=None):
    super(lineEditDemo,self).__init__(parent)
    self.setWindowTitle('QLineEdit例子')

    #例項化表單佈局
    flo=QFormLayout()

    #建立4個文字輸入框
    PNormalLineEdit=QLineEdit()
    pNoEchoLineEdit=QLineEdit()
    pPasswordListEdit=QLineEdit()
    pPasswordEchoOnEditLineEdit=QLineEdit()

    #新增到表單佈局中
    #flo.addRow(文字名稱(可以自定義),文字框)
    flo.addRow('Normal',PNormalLineEdit)
    flo.addRow('NoEcho',pNoEchoLineEdit)
    flo.addRow('Password',pPasswordListEdit)
    flo.addRow('PasswordEchoOnEdit',pPasswordEchoOnEditLineEdit)

    #設定setPlaceholderText()文字框浮現的文字
    PNormalLineEdit.setPlaceholderText('Normal')
    pNoEchoLineEdit.setPlaceholderText('NoEcho')
    pPasswordListEdit.setPlaceholderText('Password')
    pPasswordEchoOnEditLineEdit.setPlaceholderText('PasswordEchoOnEdit')

    #setEchoMode():設定顯示效果

    #QLineEdit.Normal:正常顯示所輸入的字元,此為預設選項
    PNormalLineEdit.setEchoMode(QLineEdit.Normal)
    #QLineEdit.NoEcho:不顯示任何輸入的字元,常用於密碼型別的輸入,且長度保密
    pNoEchoLineEdit.setEchoMode(QLineEdit.NoEcho)
    #QLineEdit.Password:顯示與平臺相關的密碼掩飾字元,而不是實際輸入的字元
    pPasswordListEdit.setEchoMode(QLineEdit.Password)
    #QLineEdit.PasswordEchoOnEdit:在編輯時顯示字元,負責顯示密碼型別的輸入
    pPasswordEchoOnEditLineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit)

    #設定視窗的佈局
    self.setLayout(flo)

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

效果如下

python GUI庫圖形介面開發之PyQt5單行文字框控制元件QLineEdit詳細使用方法與例項

QLineEdit驗證器例項

#匯入,Qapplication,單行文字框,視窗,表單佈局
from PyQt5.QtWidgets import QApplication,QFormLayout
#匯入文字校驗器:整數校驗器與浮點數校驗器,其他自定義校驗器
from PyQt5.QtGui import QIntValidator,QDoubleValidator,QRegExpValidator

from PyQt5.QtCore import QRegExp
import sys

class lineEditDemo(QWidget):
  def __init__(self,self).__init__(parent)
    self.setWindowTitle('QLineEdit例子')

    #例項化表單佈局
    flo=QFormLayout()

    #建立三個文字框
    pIntLineEdit=QLineEdit()
    pDoubleLineEdit=QLineEdit()
    pValidatorLineEdit=QLineEdit()

    #表單佈局新增名稱及控制元件
    flo.addRow('整型',pIntLineEdit)
    flo.addRow('浮點型',pDoubleLineEdit)
    flo.addRow('字母和數字',pValidatorLineEdit)

    #設定文字框的預設浮現文字
    pIntLineEdit.setPlaceholderText('整型')
    pDoubleLineEdit.setPlaceholderText('浮點型')
    pValidatorLineEdit.setPlaceholderText('字母和數字')

    #整型 範圍 【1-99】

    #例項化整型驗證器,並設定範圍為1-99
    pIntvalidator=QIntValidator(self)
    pIntvalidator.setRange(1,99)

    #浮點型 範圍 【-360,360】,精度 小數點後兩位

    #例項化浮點驗證器,設定範圍-360到360
    pDoubleValidator=QDoubleValidator()
    pDoubleValidator.setRange(-360,360)

    pDoubleValidator.setNotation(QDoubleValidator.StandardNotation)
    #設定精度小數點後兩位
    pDoubleValidator.setDecimals(2)

    #字母和數字

    #設定文字允許出現的字元內容
    reg=QRegExp('[a-zA-Z0-9]+$')
    #自定義文字驗證器
    pValidator=QRegExpValidator(self)
    #設定屬性
    pValidator.setRegExp(reg)

    #設定驗證器
    pIntLineEdit.setValidator(pIntvalidator)
    pDoubleLineEdit.setValidator(pDoubleValidator)
    pValidatorLineEdit.setValidator(pValidator)

    self.setLayout(flo)
if __name__ == '__main__':
  app=QApplication(sys.argv)
  win=lineEditDemo()
  win.show()
  sys.exit(app.exec_())

效果如下

python GUI庫圖形介面開發之PyQt5單行文字框控制元件QLineEdit詳細使用方法與例項

QLineEdit輸入掩碼例項

from PyQt5.QtWidgets import QApplication,QFormLayout,QWidget
import sys

class lineEditDemo(QWidget):
  def __init__(self,self).__init__(parent)
    self.setWindowTitle('QlineEdit的掩碼輸入例子')

    #例項化表單佈局
    flo=QFormLayout()
    #建立4個文字框
    pIPlineEdit=QLineEdit()
    pMAXlineEdit=QLineEdit()
    pDatelineEdit=QLineEdit()
    pLiceseLineEdit=QLineEdit()

    #setInputMask():設定掩碼

    #ip地址掩碼
    pIPlineEdit.setInputMask('000.000.000.000;_')
    #Mac地址掩碼
    pMAXlineEdit.setInputMask('HH:HH:HH:HH:HH:HH;_')
    #日期掩碼
    pDatelineEdit.setInputMask('0000-00-00')
    #許可證掩碼
    pLiceseLineEdit.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#')


    #新增名稱與控制元件到表單佈局中
    flo.addRow('數字掩碼',pIPlineEdit)
    flo.addRow('Mac掩碼',pMAXlineEdit)
    flo.addRow('日期掩碼',pDatelineEdit)
    flo.addRow('許可證掩碼',pLiceseLineEdit)

    #設定視窗的佈局
    self.setLayout(flo)
if __name__ == '__main__':
  app=QApplication(sys.argv)
  win=lineEditDemo()
  win.show()
  sys.exit(app.exec_())

效果如下

python GUI庫圖形介面開發之PyQt5單行文字框控制元件QLineEdit詳細使用方法與例項

QLineEdit綜合例項

from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtGui import QIntValidator,QFont
from PyQt5.QtCore import Qt
import sys

class lineEditDemo(QWidget):
  def __init__(self,self).__init__(parent)

    #建立文字
    e1=QLineEdit()
    #設定文字校驗器為整數,只有輸入整數才為有效值
    e1.setValidator(QIntValidator())
    #設定允許輸入的最大字元數
    e1.setMaxLength(4)
    #設定文字靠右對齊
    e1.setAlignment(Qt.AlignRight)
    #設定文字的字型和字號大小
    e1.setFont(QFont('Arial',20))

    #建立文字
    e2=QLineEdit()
    #設定浮點型校驗器,有效範圍(0.99-99.99),保留兩位小數
    e2.setValidator(QDoubleValidator(0.99,99.99,2))

    #表單佈局
    flo=QFormLayout()
    #新增名稱及控制元件到佈局中
    flo.addRow('integer validator',e1)
    flo.addRow('Double Validator',e2)

    #建立文字
    e3=QLineEdit()
    #定義文字輸入掩碼,9:ASCII字母字元是必須輸入的(0-9)
    e3.setInputMask('+99_9999_999999')

    flo.addRow('Input Mask',e3)


    e4=QLineEdit()
    #文字修改訊號發射與槽函式的繫結
    e4.textChanged.connect(self.textchanged)

    flo.addRow('Text changed',e4)

    e5=QLineEdit()
    #設定文字框顯示的格式,QLineEdit.Password:顯示密碼掩碼字元,而不是實際輸入的字元
    e5.setEchoMode(QLineEdit.Password)
    flo.addRow('Password',e5)

    #建立文字框並增添文字框的內容
    e6=QLineEdit('HELLO PyQt5')
    #設定屬性為只讀
    e6.setReadOnly(True)
    flo.addRow('Read Only',e6)
    #編譯完成的訊號與槽函式的繫結
    e5.editingFinished.connect(self.enterPress)

    #設定視窗的佈局
    self.setLayout(flo)

    self.setWindowTitle("QLinedit例子")

  def textchanged(self,text):
    print('輸入的內容為'+text)

  def enterPress(self):
    print('已輸入')
if __name__ == '__main__':
  app=QApplication(sys.argv)
  win=lineEditDemo()
  win.show()
  sys.exit(app.exec_())

python GUI庫圖形介面開發之PyQt5單行文字框控制元件QLineEdit詳細使用方法與例項

在這個例子中,演示了使用QLineEdit物件的一些方法

第一個文字框e1,顯示文字使用自定義字型,右對齊,允許輸入整數

第二個文字框e2,限制輸入小數點後兩位

第三個文字框e3,需要一個輸入掩碼應用於電話號碼

第四個文字框e4,需要發射訊號textChanged,連結到槽函式textChanged()

第五個文字框e5,設定顯示模式EchoMode為Password需要發射editingfinished訊號連線到槽函式enterPress(),一旦使用者按下回車鍵,該函式就會執行

本文詳細講解了PyQt5中單行文字框控制元件QLineEdit詳細使用方法與例項,更多關於PyQt5中單行文字框控制元件QLineEdit使用方法與例項請檢視下面的相關連結