QLineEdit和QTextEdit都是文本框類(lèi),QLineEdit類(lèi)是單行文本框控件,可以輸入單行字符串。QTextEdit類(lèi)是多行文本框控件,可以顯示多行文本內(nèi)容,當(dāng)文本內(nèi)容超出控件顯示范圍時(shí),可以顯示水平個(gè)垂直滾動(dòng)條。QTextEdit不僅可以顯示文本還可以顯示HTML文檔。
來(lái)看看兩者的使用方法和區(qū)別吧~
1、QLineEdit文本框類(lèi)QLineEdit類(lèi)中的常用方法如下表所示:
定義輸入掩碼的字符,下表中列出了輸入掩碼的占位符和字面字符,并說(shuō)明其如何控制數(shù)據(jù)輸入。
掩碼由掩碼字符和分隔符字符串組成,后面可以跟一個(gè)分號(hào)和空白字符,空白字符在編輯后會(huì)從文本中刪除的。掩碼示例如下表所示:
QLineEdit類(lèi)中的常用信號(hào)如下表所示:?
通過(guò)一個(gè)簡(jiǎn)單案例了解QLineEdit文本框類(lèi)的使用吧,效果如下所示:
示例中,演示了QLineEdit文本框類(lèi)常用方法:
- 第1個(gè)文本框e1,顯示文本使用自定義字體、右對(duì)齊、允許輸入整數(shù)。
- 第2個(gè)文本框e2,限制輸入小數(shù)點(diǎn)后兩位。
- 第3個(gè)文本框e3,需要一個(gè)輸入掩碼應(yīng)用于電話號(hào)碼。
- 第4個(gè)文本框e4,需要發(fā)射信號(hào)textChanged,連接到槽函數(shù)textchanged()。
- 第5個(gè)文本框e6,設(shè)置顯示模式EchoMode為Password,需要發(fā)射editingfinished信號(hào)連接到槽函數(shù)enterPress(),一旦用戶(hù)按下了回車(chē)鍵,該函數(shù)就會(huì)被執(zhí)行。
- 第6個(gè)文本框e6,顯示一個(gè)默認(rèn)的文本,不能編輯,設(shè)置為只讀的。
實(shí)現(xiàn)代碼如下所示:
from PyQt5.QtWidgets import QApplication, QLineEdit , QWidget , QFormLayout
from PyQt5.QtGui import QIntValidator , QDoubleValidator , QFont
from PyQt5.QtCore import Qt
import sys
class lineEditDemo(QWidget):
def __init__(self, parent=None):
super(lineEditDemo, self).__init__(parent)
e1 = QLineEdit()
e1.setValidator( QIntValidator() )
e1.setMaxLength(4)
e1.setAlignment( Qt.AlignRight )
e1.setFont( QFont("Arial",20))
e2 = QLineEdit()
e2.setValidator( QDoubleValidator(0.99,99.99,2))
flo = QFormLayout()
flo.addRow("integer validator", e1)
flo.addRow("Double validator",e2)
e3 = QLineEdit()
e3.setInputMask('+99_9999_999999')
flo.addRow("Input Mask",e3)
e4 = QLineEdit()
e4.textChanged.connect( self.textchanged )
flo.addRow("Text changed",e4)
e5 = QLineEdit()
e5.setEchoMode( QLineEdit.Password )
flo.addRow("Password",e5)
e6 = QLineEdit("CSDN不脫發(fā)的程序猿")
e6.setReadOnly(True)
flo.addRow("Read Only",e6 )
e5.editingFinished.connect( self.enterPress )
self.setLayout(flo)
self.setWindowTitle("QLineEdit例子")
def textchanged(self, text):
print( "輸入的內(nèi)容為: "+text )
def enterPress( self ):
print( "已輸入值" )
if __name__ == "__main__":
app = QApplication(sys.argv)
win = lineEditDemo()
win.show()
sys.exit(app.exec_())
2、QTextEdit文本框類(lèi)
QTextEdit類(lèi)中的常用方法如下表所示:
通過(guò)一個(gè)簡(jiǎn)單案例了解QTextEdit文本框類(lèi)的使用吧,效果如下所示:
示例中使用了一個(gè)QTextEdit控件:textEdit和兩個(gè)QPushButton控件:btnPress1、btnPress2。
以下代碼將按鈕btnPress1的clicked信號(hào)連接到槽函數(shù)btn_btnPress1_Clicked()。
self.btnPress1.clicked.connect(self.btnPress1_Clicked)
當(dāng)按鈕btnPress1被按下時(shí)會(huì)觸發(fā)clicked信號(hào),然后調(diào)用btnPress_Clicked(),最后把文本內(nèi)容顯示到textEdit控件中。同理,當(dāng)單擊btnPress2按鈕后,將改變QTextEdit控件textEdit的顯示內(nèi)容為HTML文檔。
實(shí)現(xiàn)代碼如下所示:
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("CSDN不脫發(fā)的程序猿 點(diǎn)擊按鈕")
def btnPress2_Clicked(self):
self.textEdit.setHtml("<font color='red' size='6'><red>公眾號(hào):美男子玩編程 點(diǎn)擊按鈕。</font>")
if __name__ == "__main__":
app = QApplication(sys.argv)
win = TextEditDemo()
win.show()
sys.exit(app.exec_())
本文摘自 :https://blog.51cto.com/H