python GUI庫圖形介面開發之PyQt5單行文字框控制元件QLineEdit詳細使用方法與例項
阿新 • • 發佈:2020-02-28
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_())
效果如下
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_())
效果如下
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_())
效果如下
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_())
在這個例子中,演示了使用QLineEdit物件的一些方法
第一個文字框e1,顯示文字使用自定義字型,右對齊,允許輸入整數
第二個文字框e2,限制輸入小數點後兩位
第三個文字框e3,需要一個輸入掩碼應用於電話號碼
第四個文字框e4,需要發射訊號textChanged,連結到槽函式textChanged()
第五個文字框e5,設定顯示模式EchoMode為Password需要發射editingfinished訊號連線到槽函式enterPress(),一旦使用者按下回車鍵,該函式就會執行
本文詳細講解了PyQt5中單行文字框控制元件QLineEdit詳細使用方法與例項,更多關於PyQt5中單行文字框控制元件QLineEdit使用方法與例項請檢視下面的相關連結