文本類控制項主要用來顯示或者編輯文本信息,PyQt5中文本類控制項主要有Label、LineEdit、TextEdit、SpinBox、DoubleSpinBox、LCDNumber等。
一、Label標籤控制項
主要用於顯示用戶不能編輯的文本,標識窗體上的對象如給文本框、列表框添加描述信息。對應PyQt5中QLabel類。直接在Qt Designer設計工具的屬性編輯器中設置
1、設置標籤文本,設置text屬性;
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(30, 30, 314, 81))
self.label.setText("標題")
2、設置標籤文本對齊方式,用alignment屬性,Horizontal用來設置標籤文本水平對齊方式,可選AlignLeft左對齊,AlignHCenter水平居中對齊,AlignRight右對齊,AlignJustify兩端對齊。同理,Verrtical用來設置標籤文本垂直對齊方式,可選Align Top頂部對齊,AlignVCenter垂直居中對齊,AlignBottom底部對齊。
# 設置文本對齊方式代碼
self.label.setAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
3、設置文本換行顯示,標籤寬度不足,系統默認顯示部分文字,這種情景下,可設置標籤中文本換行顯示。wordWrap屬性複選框選中即可。
# # 設置長文本,並換行顯示代碼
self.label.setText("Python數據分析實例每日分享,從菜鳥到大神")
self.label.setWordWrap(True)
4、為標籤設置超連結,在QLabel類的setText()方法使用HTML中<a>標籤設置超連結文本,然後將Label標籤中的setOpenExternalLinks()
方法設置成True。
# 設置超連結
self.label.setText("<a href='https://www.baidu.com'>百度</a>")
self.label.setOpenExternalLinks(True) #允許訪問超連結
5、為Label標籤設置圖片,用到setPixmap()方法,該方法需要QPixmap對象,表示圖標對象。
from PyQt5.QtGui import QPixmap # 導入QPixmap類
self.label.setPixmap(QPixmap('test.png')) # 為label設置圖片
6、獲取標籤文本,使用QLabel類的text()方法,self.label.text().
二、LineEdit單行文本框
該控制項可以輸入單行字符串
方法
按固定值方式對齊文本:
1、Qt.AlignLeft,水平方向靠左對齊
2、Qt.AlignRight,水平方向靠右對齊
3、Qt.AlignCenter,水平方向居中對齊
4、Qt.AlignJustify,水平方向調整間距兩端對齊
5、Qt.AlignTop,垂直方向靠上對齊
6、Qt.AlignBottom,垂直方向靠下對齊
7、Qt.AlignVCenter,垂直方向居中對齊
clear()setEchoMode()
設置文本框顯示格式
1、QLineEdit.Normal
,正常顯示所輸入的字符,默認
2、QLineEdit.NoEcho,不顯示任何輸入的字符,常用於密碼類型的輸入
3、QLineEdit.Password,顯示與平臺相關的密碼掩碼字符,而不是實際輸入
4、QLineEdit.PasswordEchoOnEdit,編輯時顯示字符,顯示密碼類型輸入
setPlaceholderText()設置掩碼,掩碼由掩碼字符和分隔符字符串組成,後面可以跟一個分號和空白字符。
1、日期掩碼:0000-00-00
2、時間掩碼:00:00:00
3、序列號掩碼:>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#
setValidator()設置文本框驗證器,限制任意可能輸入的文本。可選校驗器:
1、QIntValidator,限制輸入整數
2、QDoubleValidator,限制輸入浮點數
3、QRegexpValidator,檢查輸入是否符合正則表達式
QLineEdit類常用信號
from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget, QFormLayout
from PyQt5.QtGui import QIntValidator,QDoubleValidator, QRegExpValidator
from PyQt5.QtCore import QRegExp
import sys
class lineEditDemo(QWidget):
def __init__(self, parent=None):
super(lineEditDemo, self).__init__(parent)
self.setWindowTitle("QLineEdit示例")
#表單布局
formlayout = QFormLayout()
pNamelLineEdit = QLineEdit()
pNormalLineEdit = QLineEdit()
pNoEchoLineEdit = QLineEdit()
pPasswordLineEdit = QLineEdit()
pPasswordEchoOnEditLineEdit = QLineEdit()
formlayout.addRow("用戶名", pNamelLineEdit)
formlayout.addRow("Normal", pNormalLineEdit)
formlayout.addRow("NoEcho", pNoEchoLineEdit)
formlayout.addRow("Password", pPasswordLineEdit)
formlayout.addRow("PasswordEchoOnEdit", pPasswordEchoOnEditLineEdit)
#設置文本框浮現文字
pNamelLineEdit.setPlaceholderText("請輸入用戶名")
pNormalLineEdit.setPlaceholderText("Normal")
pNoEchoLineEdit.setPlaceholderText("NoEcho")
pPasswordLineEdit.setPlaceholderText("Password")
pPasswordEchoOnEditLineEdit.setPlaceholderText("PasswordEchoOnEdit")
# 設置文本框顯示效果
pNamelLineEdit.setEchoMode(QLineEdit.Normal)
pNormalLineEdit.setEchoMode(QLineEdit.Normal)
pNoEchoLineEdit.setEchoMode(QLineEdit.NoEcho)
pPasswordLineEdit.setEchoMode(QLineEdit.Password)
pPasswordEchoOnEditLineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit)
#####驗證器設置
# #整數型範圍,控制只能輸入8位數字
# pIntValidator=QIntValidator(self)
# pIntValidator.setRange(10000000,99999999)
#
# #浮點型,小數點後兩位
# pDoubleValidator=QDoubleValidator(self)
# pDoubleValidator.setRange(0,1)
# pDoubleValidator.setDecimals(2)
#字母和數字組合
reg=QRegExp("[a-zA-Z0-9]+$")
pRegexpValidator=QRegExpValidator(self)
pRegexpValidator.setRegExp(reg)
#設置驗證器
pPasswordLineEdit.setValidator(pRegexpValidator)
####限制用戶輸入還可以輸入掩碼,常見有IP位址、MAC地址、日期、許可證件等。
pNormalLineEdit.setInputMask("0000-00-00") #日期掩碼
# pNormalLineEdit.setInputMask("000.000.000.000;_") #數字掩碼
# pNormalLineEdit.setInputMask("HH:HH:HH:HH:HH:HH;_") #MAC掩碼
# pNormalLineEdit.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#") #許可證件掩碼
self.setLayout(formlayout)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = lineEditDemo()
win.show()
sys.exit(app.exec_())
如果需要輸入多行字符串,則使用QTextEdit類。當文本內容超出控制項顯示範圍時,顯示垂直滾動條,還支持顯示HTML網頁。
方法示例:QTextEdit示例
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayout, QPushButton
import sys
class TextEditDemo(QWidget):
def __init__(self, parent=None):
super(TextEditDemo, self).__init__(parent)
self.setWindowTitle("QTextEdit 例子")
self.resize(300, 270)
self.textEdit = QTextEdit()
self.btnPress1 = QPushButton("顯示文本")
self.btnPress2 = QPushButton("顯示HTML")
layout = QVBoxLayout()
layout.addWidget(self.textEdit)
layout.addWidget(self.btnPress1)
layout.addWidget(self.btnPress2)
self.setLayout(layout)
self.btnPress1.clicked.connect(self.btnPress1_Clicked)
self.btnPress2.clicked.connect(self.btnPress2_Clicked)
def btnPress1_Clicked(self):
self.textEdit.setPlainText("Hello PyQt5!\n點擊按鈕")
def btnPress2_Clicked(self):
self.textEdit.setHtml("<font color='blue' size='8'><red>Hello PyQt5!\n點擊按鈕。</font>")
if __name__ == "__main__":
app = QApplication(sys.argv)
win = TextEditDemo()
win.show()
sys.exit(app.exec_())
三、SpinBox整數和DoubleSpinBox小數選擇控制項
SpinBox是一個整數數字選擇控制項,提供一對上下箭頭,用戶可以單擊選擇數值,也可直接輸入。
方法DoubleSpinBox類似SpinBox,區別在於保留小數。該控制項提供setDecimals()方法,用來設置小數位數。
四、LCDNumber液晶數字顯示控制項
顯示液晶數字,對應PyQt5中QLCDNumber類。
setSegmentStyle()#關鍵代碼
from PyQt5 import QtCore, QtGui, QtWidgets
self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)
self.lcdNumber.setGeometry(QtCore.QRect(20, 40, 160, 40))
self.lcdNumber.setDigitCount(7) # 設置最大顯示7位數字
self.lcdNumber.setMode(QtWidgets.QLCDNumber.Dec) # 設置默認以十進位顯示數字
self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Flat) # 設置數字顯示屏的顯示樣式
self.lcdNumber.setObjectName("lcdNumber")