QTextEdit


 

PyQt5 - QTextEdit

參考資料:https://doc.qt.io/qt-5/qtextedit.html#details

QTextEdit類提供了一個控件來編輯和瀏覽純文本和富文本。

from PyQt5.QtWidgets import QMainWindow, QApplication, QTextEdit
import sys

class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.te1 = QTextEdit(self)
        self.te1.setGeometry(10, 10, 300, 300)
        '''
        write something down here
        '''
        self.setGeometry(0, 0, 320, 320)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

1. acceptRichText和setAcceptRichText()

此屬性用來指定文本框是否接受富文本輸入。當設置為false時,文本框只接受純文本,比如通過鍵盤輸入或拖拽。默認情況為true。

print(self.te1.acceptRichText()) # True
self.te1.setAcceptRichText(True)

2. autoFormatting

此屬性用來指定是否自動進行格式化。有效值可以為AutoFormattingFlag中各值的組合。默認值為AutoNone。選擇AutoAll可以自動進行各類的格式化。目前,只有一種格式化方式可實現,即AutoBulletList。

AutoNone為不進行任何方式的格式化

AutoBulletList為自動生成列表(例如,在最左側輸入*號時,或者在已經存在的列表結尾回車時)

AutoAll為自動進行全部類型的格式化

# AutoNone = 0
# AutoBulletList = 0x00000001
# AutoAll = 0xffffffff
print(self.te1.autoFormatting())
self.te1.setAutoFormatting(QTextEdit.AutoAll)

 3. cursorWidth() & setCursorWidth()

用來指定光標的寬度,默認值是1px

print(self.te1.cursorWidth()) # 1
self.te1.setCursorWidth(10)

4. document() & setDocument()


5. documentTitle() & setDocumentTitle()

保存從文檔文本解析出的文檔題目,默認的,對於一個新建的空文檔,這個屬性是空字符串。

print(self.te1.documentTitle()) # 
self.te1.setDocumentTitle('XXX')

6. toHtml() & setHtml()
提供了文本到html的接口。toHtml()返回一段文本的html形式。setHml()將改變文本,之前所有的文本均被刪除,撤銷與恢復的歷史也被清除。輸入的文本將被解釋為html格式的富文本。除非textCursor()返回的光標位置已在文檔的開始處,否則,currentCharFormat()也將被重置。

注意:當一個包含HTML的QString對象被創建並傳遞到setHTML()時,調用者需要確保文本已被正確解碼。

默認情況下,對於一個新建的空文檔,toHtml()將返回一個body中沒有內容的Html 4.0版本的文檔(有head和一個簡單的css,文本格式主要以html方式定義)。

print(self.te1.toHtml())
'''
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;">
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
'''
self.te1.setHtml('<a target=_blank href="https://www.cnblogs.com/">cnblog</a>')
# cnblog

 7. lineWrapMode()和setLineWrapMode()

用來指定換行模式,默認模式是WidgetWidth,即超出文本框右側的文本將在空格處被換行,以保證詞的完整性。如果想要在單詞中間換行,需調用setWordWrapMode()方法。如果設置了FixedPixelWidth或FixedColumnWidth模式,則需要同時調用setLineWrapColumnOrWidth()方法來指定寬度。

# QTextEdit.NoWrap = 0
# QTextEdit.WidgetWidth = 1
# QTextEdit.FixedPixelWidth = 2
# QTextEdit.FixedColumnWidth = 3
print(self.te1.lineWrapMode()) # 1
self.te1.setLineWrapMode(0)
self.te1.setLineWrapMode(QTextEdit.NoWrap)

8. lineWrapColumnOrWidth() & setLineWrapColumnOrWidth()

決定文本的換行位置。若換行模式為FixedPixelWidth,則超過輸入像素值的文字被換行。若換行模式為FixedColumnWidth,則超過輸入的字符數后的文字被換行。

self.te1.setText('This property holds the position (in pixels or columns depending on the wrap mode) where text will be wrapped.')
print(self.te1.lineWrapColumnOrWidth()) # 0

self.te1.setLineWrapMode(QTextEdit.FixedPixelWidth)
self.te1.setLineWrapColumnOrWidth(200)
'''
This property holds the position
(in pixels or columns depending
on the wrap mode) where text
will be wrapped.
'''

self.te1.setLineWrapMode(QTextEdit.FixedColumnWidth)
self.te1.setLineWrapColumnOrWidth(30)
'''
This property holds the positi
on (in pixels or columns depen
ding on the wrap mode) where t
ext will be wrapped.

'''

9. overwriteMode()和setOverwriteMode()
用來決定輸入的文本是否會改寫已經存在的文本,相當於按下鍵盤上insert后以切換插入或改寫模式。若設置為true,則新輸入的文本將逐字的替換已有的文本。若設置為false,則新輸入的文本將在光標處插入,使已有文本后移。默認值是false,即不改寫已有文本。

print(self.te1.overwriteMode()) # False
self.te1.setOverwriteMode(True)

10. placeholderText()和setPlaceholderText()

用來決定占位文本,即沒有輸入時,顯示的一段提示字符串。設置此屬性后,當document()為空時,文本框會顯示一串灰色的字符串。默認情況下,此屬性為空字符串。

print(self.te1.placeholderText()) #
self.te1.setPlaceholderText('write something down here')

11. toPlainText()和setPlainText()

用來獲取或設置文本框的內容為純文本。設置后,已存在的文本將被清除,撤銷與恢復的歷史也被清除。除非textCursor()返回的光標已在文檔的開始處,否則,currentCharFormat()也將被重置。

如果文本框內含有其他類型的內容,當你調用toPlainText()方法時,它們不會被替換為純文本。唯一的例外是nbsp;,它將被轉換為空格。

默認情況下,對於沒有內容的文本框,此屬性是空字符串。

self.te1.setHtml('<a target=_blank href="https://www.cnblogs.com/">cnblog</a>') # cnblog
print(self.te1.toPlainText()) # cnblog
self.te1.setPlainText('<a target=_blank href="https://www.cnblogs.com/">cnblog</a>')
# <a target=_blank href="https://www.cnblogs.com/">cnblog</a>

12. isReadOnly()和setReadOnly()
用來指定文本是否只讀,設置為只讀后,文本只能被選擇,不能被編輯。默認為false。

print(self.te1.isReadOnly()) # False
self.te1.setReadOnly(True)

13. tabChangesFocus()和setTabChangesFocus()
此屬性用來指定tab鍵是切換焦點,還是作為輸入。默認為false。設置為true后,若存在其他控件,則按tab鍵后,焦點將會切換到另一個控件,若不存在其他控件,tab還是作為輸入。

print(self.te1.tabChangesFocus()) # False
self.te1.setTabChangesFocus(True)

14. tabStopDistance()和setTabStopDistance()
此屬性用來指定tab鍵對應的像素值,默認為80px。

print(self.te1.tabStopDistance()) # 80
print(type(self.te1.tabStopDistance())) # <class 'float'>
self.te1.setTabStopDistance(50)

15. textInteractionFlags()和setTextInteractionFlags()
此屬性用來指定控件如何響應用戶輸入。默認值取決於控件是否只讀,以及是不是QTextBrowser。

(此處補:flag對應值和意義)

from PyQt5.QtCore import Qt

print(self.te1.textInteractionFlags()) # <PyQt5.QtCore.Qt.TextInteractionFlags object at 0x032A69B0>
self.te1.setTextInteractionFlags(Qt.TextSelectableByMouse)

16. isUndoRedoEnabled()和setUndoRedoEnabled()
此屬性用來指定撤銷(ctrl+z)和恢復(ctrl+y)功能是否可用。

print(self.te1.isUndoRedoEnabled()) # True
self.te1.setUndoRedoEnabled(False)

17. wordWrapMode()和setWordWrapMode()
此屬性用來指定是否在單詞中間換行,默認值為QTextOption.WrapAtWordBoundaryOrAnywhere。

from PyQt5.QtGui import QTextOption

print(self.te1.wordWrapMode()) # 4
self.te1.setWordWrapMode(QTextOption.NoWrap)

未完待續


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM