當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)
2021-10-20 10:27:17


QLineEdit和QTextEdit都是文本框類,QLineEdit類是單行文本框控件,可以輸入單行字符串。QTextEdit類是多行文本框控件,可以顯示多行文本內(nèi)容,當(dāng)文本內(nèi)容超出控件顯示范圍時,可以顯示水平個垂直滾動條。QTextEdit不僅可以顯示文本還可以顯示HTML文檔。

來看看兩者的使用方法和區(qū)別吧~

1、QLineEdit文本框類

QLineEdit類中的常用方法如下表所示:

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_QLineEdit

定義輸入掩碼的字符,下表中列出了輸入掩碼的占位符和字面字符,并說明其如何控制數(shù)據(jù)輸入。

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_QTextEdit_02

掩碼由掩碼字符和分隔符字符串組成,后面可以跟一個分號和空白字符,空白字符在編輯后會從文本中刪除的。掩碼示例如下表所示:

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_QLineEdit_03

QLineEdit類中的常用信號如下表所示:?

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_qt_04

通過一個簡單案例了解QLineEdit文本框類的使用吧,效果如下所示:

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_qt_05

示例中,演示了QLineEdit文本框類常用方法:

  • 第1個文本框e1,顯示文本使用自定義字體、右對齊、允許輸入整數(shù)。
  • 第2個文本框e2,限制輸入小數(shù)點后兩位。
  • 第3個文本框e3,需要一個輸入掩碼應(yīng)用于電話號碼。
  • 第4個文本框e4,需要發(fā)射信號textChanged,連接到槽函數(shù)textchanged()。
  • 第5個文本框e6,設(shè)置顯示模式EchoMode為Password,需要發(fā)射editingfinished信號連接到槽函數(shù)enterPress(),一旦用戶按下了回車鍵,該函數(shù)就會被執(zhí)行。
  • 第6個文本框e6,顯示一個默認的文本,不能編輯,設(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文本框類

QTextEdit類中的常用方法如下表所示:

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_qt_06

通過一個簡單案例了解QTextEdit文本框類的使用吧,效果如下所示:

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_文本框類_07

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_文本框類_08

Python Qt GUI設(shè)計:QLineEdit和QTextEdit文本框類(基礎(chǔ)篇—13)_QTextEdit_09

示例中使用了一個QTextEdit控件:textEdit和兩個QPushButton控件:btnPress1、btnPress2。

以下代碼將按鈕btnPress1的clicked信號連接到槽函數(shù)btn_btnPress1_Clicked()。

self.btnPress1.clicked.connect(self.btnPress1_Clicked)

當(dāng)按鈕btnPress1被按下時會觸發(fā)clicked信號,然后調(diào)用btnPress_Clicked(),最后把文本內(nèi)容顯示到textEdit控件中。同理,當(dāng)單擊btnPress2按鈕后,將改變QTextEdit控件textEdit的顯示內(nèi)容為HTML文檔。

實現(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ā)的程序猿 點擊按鈕")

def btnPress2_Clicked(self):
self.textEdit.setHtml("<font color='red' size='6'><red>公眾號:美男子玩編程 點擊按鈕。</font>")

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

本文摘自 :https://blog.51cto.com/H

開通會員,享受整站包年服務(wù)立即開通 >