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

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


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)中的常用方法如下表所示:

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

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

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

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

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

QLineEdit類(lèi)中的常用信號(hào)如下表所示:?

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

通過(guò)一個(gè)簡(jiǎn)單案例了解QLineEdit文本框類(lèi)的使用吧,效果如下所示:

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

示例中,演示了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)中的常用方法如下表所示:

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

通過(guò)一個(gè)簡(jiǎn)單案例了解QTextEdit文本框類(lèi)的使用吧,效果如下所示:

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

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

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

示例中使用了一個(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

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