Blog Details

PYQT5 – QTextEdit

QTextEdit adalah penampil/editor WYSIWYG canggih yang mendukung pemformatan teks kaya menggunakan tag gaya HTML. QTextEdit dioptimalkan untuk menangani dokumen besar dan untuk merespons input pengguna dengan cepat.

QTextEdit biasa digunakan paragraf dan karakter. Paragraf adalah string berformat yang dibungkus kata agar sesuai dengan lebar widget. Secara default saat membaca teks biasa, satu baris baru menandakan sebuah paragraf. Sebuah dokumen terdiri dari nol atau lebih paragraf. Kata-kata dalam paragraf diluruskan sesuai dengan perataan paragraf. Paragraf dipisahkan oleh garis putus-putus. Setiap karakter dalam paragraf memiliki atributnya sendiri, misalnya font dan warna.

QTextEdit dapat menampilkan gambar, daftar, dan tabel. Jika teks terlalu besar untuk dilihat dalam viewport edit teks, bilah gulir akan muncul. Pengeditan teks dapat memuat file teks biasa dan richtext ( text dengan format yang andvance ). Rich text dapat menggunakan subset markup HTML 4

Signals

copyAvailable (b) : Signal saat text edit tersedia untuk copy
currentCharFormatChanged (format) : signal saat text edit format karakternya berubah
cursorPositionChanged () : signal saat posisi cursor di text edit berubah / berpindah
redoAvailable (b) : signal saat text edit tersedia perintah redo
selectionChanged () : signal saat seleksi pada text edit berubah / berpindah
textChanged () :  signal saat text pada text edit berubah
undoAvailable (b) : signal saat textedit tersedia perintah undo

Contoh penggunaan : QTextEdit.textChanged.connect(NamaFungsi)

Slot

append(text) : Untuk Menambahkan text ke text edit

textEdit.append("test")
Python

insertHtml(text) : Untuk Menambahkan text ke text edit dengan format html

textEdit.insertHtml("html code")
Python

insertPlainText(text) : Untuk Menambahkan text ke text edit dengan format PlainText

1
textEdit.insertPlainText("test")

setHtml(text) : Untuk mengganti text ke text edit dengan format html

textEdit.setHtml("html code")
Python

setMarkdown(markdown) : Untuk mengganti text ke text edit dengan format markdown ( format seperti html tetapi libih sederhana )

textEdit.setMarkdown("Aku *sedang* belajar **menulis** dengan [markdown](https://en.wikipedia.org/wiki/Markdown).")
Ruby

setPlainText(text) : Untuk mengganti text ke text edit dengan format PlainText

textEdit.setPlainText("test")
Python

setText(text) : Untuk mengganti text ke text edit

textEdit.setText("test")
Python

clear() : Untuk menghapus semua data di text edit

textEdit.clear()
Python

copy() : Untuk mengcopy text yang terseleksi di text edit

textEdit.copy()
Python

cut() : Untuk menghapus text yang terseleksi di text edit

textEdit.cut()
Python

paste() : Untuk menghapus text dari hasil copy

textEdit.paste()
Python

redo() : Perintah untuk redo

textEdit.redo()
Python

undo() : Perintah untuk undo

textEdit.undo()
Python

scrollToAnchor(name) : Menuju kesebuah anchor

#tambahkan dulu sebuah anchor
textEdit.append("<a name='test' &amp;amp;gt;halo apakabar&amp;amp;lt;/a&amp;amp;gt;
#Penggunaan scrollToAnchor(name)
textEdit.scrollToAnchor("test")
Python

selectAll() : Menseleksi semua text di textedit

textEdit.selectAll()
Python

setAlignment(a) : Mengatur alignmen
Untuk option anda bisa menggunakan :
1. Qt.AlignLeft
2. Qt.AlignRight
3. Qt.AlignBottom
4. Qt.AlignTop
5. Qt.AlignCenter
6. Qt.AlignHCenter
7. Qt.AlignVCenter

from PyQt5.QtCore import Qt
textEdit.setAlignment (Qt.AlignLeft)
Python

setCurrentFont(f) : Mengatur Font
Anda setup dulu untuk font nya

from PyQt5.QtGui import QFont
font = QtGui.QFont("arial",20)
Python

Anda juga bisa menggunakan sintax

from PyQt5.QtGui import QFont
font = QtGui.QFont()
font.setPointSize(16)
font.setFamily("arial")
font.setBold(True)
font.setUnderline(True)
font.setItalic(True)
Python

Setelah itu bisa anda terapkan untuk setCurrentFont

textEdit.setCurrentFont(font)
Python

setFontFamily(fontFamily) : Mengatur Font familiy

textEdit.setFontFamily("arial")
Python

setFontItalic(b) : Mengatur Font italic atau tidak

textEdit.setFontItalic(True)
Python

setFontPointSize(s) : Mengatur ukuran font

textEdit.setFontPointSize(16)
Markup

setFontUnderline(b) : Mengatur underline atau tidak

textEdit.setFontUnderline(True)
Python

setFontWeight(w) : Mengatur tebal dari font

textEdit.setFontWeight(100)
Python

setTextBackgroundColor(c) : Mengatur background text

textEdit.setTextBackgroundColor (Qt.GlobalColor.red)
Markup

setTextColor(c) : Mengatur warna text

 

zoomIn([range=1]) : Untuk zoom in

textEdit.zoomIn(1)
Python

zoomOut([range=1]) : Untuk zoom out

 
textEdit.zoomOut(1)
Markup

Function

acceptRichText() / setAcceptRichText (boolean) : Ketika properti ini di set false textedit hanya akan menerima input plaintext dari pengguna ketika mengimpor dari luar. Misalnya melalui clipboard / copy paste atau drag and drop. Default True.

Penggunaan

 
textEdit.setAcceptRichText(True)

print(textEdit.acceptRichText())
Python
setAlignment ()  /  alignment()  : Untuk mengatur posisi rata kanan , kiri, tengah dari text edit

Penggunaan

 
from PyQt5.QtCore import Qt
textEdit.setAlignment (Qt.AlignCenter)

print(textEdit.alignment())
Markup
autoFormatting() / setAutoFormatting()  : Saat ini, satu-satunya fitur pemformatan otomatis di PyQt5 adalah AutoBulletList . Standarnya adalah AutoNone . Pilih AutoAll untuk mengaktifkan semua pemformatan otomatis.

Penggunaan

 
textEdit.setAutoFormatting(QtWidgets.QTextEdit.AutoAll)

print(textEdit.autoFormatting())
Python
canPaste()  : Untuk mengatur apakah bisa menerima perintah paste di text edit.

Penggunaan

 
textEdit.setReadOnly(True)

print(textEdit.canPaste())
Markup
setCurrentCharFormat() / currentCharFormat() Â  : Untuk format char yang digunakan saat memasukkan teks baru..

Penggunaan

# save format
old_format = self.textEdit.currentCharFormat()
names = ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"]
for name in names:
    color = QtGui.QColor(*random.sample(range(255), 3))
    color_format = self.textEdit.currentCharFormat()
    color_format.setForeground(color)
    self.textEdit.setCurrentCharFormat(color_format)
    self.textEdit.insertPlainText(name + "\n")
# restore format
self.textEdit.setCurrentCharFormat(old_format)
Python
currentFont() / setCurrentFont() Â  : Untuk merubah format font.

Penggunaan

#Save Old Font
old_font = self.textEdit.currentFont()
#New Font
font = QtGui.QFont()
font.setPointSize(16)
font.setFamily("arial")
font.setBold(True)
font.setUnderline(True)
font.setItalic(True)
textEdit.setCurrentFont(font)
#Insert text with New Font
textEdit.append("font Change")
#Restore old Font
textEdit.setCurrentFont(old_font)
#Insert Text with old font
textEdit.append("font original")
Markup
cursorForPosition() Â  : mengembalikan QTextCursor pada pos posisi (dalam koordinat relative viewport).
Penggunaan
location = QtCore.QPoint(50, 50)
textCursor = self.textEdit.cursorForPosition(location)
names = ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"]
for name in names:
    self.textEdit.append (name)
textCursor.select(QtGui.QTextCursor.WordUnderCursor)
self.textEdit.setTextCursor(textCursor)
word = textCursor.selectedText()
print(word)
Python
cursorRect() Â  : mengembalikan Rectangle (dalam koordinat viewport) yang menyertakan kursor edit teks.
Ouput Cursor rect adalah posisi-x,posisi-y,lebarCursor,tinggiCursor
Penggunaan
#bikin event saat cursor position change
textEdit.cursorPositionChanged.connect(self.positionChange)

#merubah lebar cursor
self.textEdit.setCursorWidth(5)
#merubah lebar dan tinggi cursor
self.textEdit.setFontPointSize(20)


print(self.textEdit.cursorRect())
print(self.textEdit.cursorRect().x())
print(self.textEdit.cursorRect().y())
print(self.textEdit.cursorRect().width())
print(self.textEdit.cursorRect().height())
Python
cursorWidth () Â  : mengembalikan lebar dari cursor
Penggunaan
#merubah lebar cursor
self.textEdit.setCursorWidth(5)
#mendapatkan cursor widht
print(self.textEdit.cursorWidth ())
Python
 
document() Â  : Untuk mengatur document property di text edit
Penggunaan

 

#untuk mengatur document bisa dengan setDocument()


personalized_document = QtGui.QTextDocument()
personalized_document.setDocumentMargin(20)
from PyQt5.QtGui import QFont
font = QtGui.QFont("arial",20)
personalized_document.setDefaultFont(font)
personalized_document.setUndoRedoEnabled(True)
self.textEdit.setDocument(personalized_document)




#mendapatkan pengaturan
print(self.textEdit.document())
Markup

documentTitle()  : Properti ini menyimpan judul dokumen yang diuraikan dari teks. Defaultnya adalah kosong
Penggunaan

#untuk mengatur document title bisa dengan setDocumentTitle()
self.textEdit.setDocumentTitle("test 1234")


#mendapatkan title document
print(self.textEdit.documentTitle())
Python

ensureCursorVisible()  : Untuk scroll dan menemukan dimana letak cursor
Penggunaan

self.textEdit.ensureCursorVisible()
Python

setExtraSelections(selections) & extraSelections()  : Fungsi ini memungkinkan penandaan sementara area tertentu dalam dokumen dengan warna tertentu misal untuk menandai seluruh baris teks dengan warna latar yang diberikan untuk menunjukkan adanya breakpoint.
Penggunaan

selection = textEdit.ExtraSelection()
color = QtGui.QColor(Qt.yellow).lighter()
selection.format.setBackground(color)
selection.cursor = textEdit.textCursor()
textEdit.setExtraSelections([selection])
textEdit.setFocus()
print(selection.format.background().color().getRgb())


selection = textEdit.extraSelections()[0]
print(selection.cursor.selectedText(), selection.format.background().color().getRgb())
Python

find(exp[, options=QTextDocument.FindFlags()])  : Fungsi untuk mencari string dalam text edit. ouput berupa boolean . apakah ditemukan atau tidak . exp = QtCore.QRegExp ,QtCore.QRegularExpression, str
Penggunaan

flag = QTextDocument.FindBackward
print(textEdit.toPlainText(), textEdit.find('A', flag))
Python

fontFamily()  : Untuk mengetahui jenis font yang digunakan dan ouput berupa string
Penggunaan

textEdit.setFontFamily("arial")
print(textEdit.fontFamily())
Markup

fontItalic()  : Untuk mengetahui apakah font italic atau tidak. output berupa boolean
Penggunaan

textEdit.setFontItalic(True)
print(textEdit.fontItalic())
Python

fontPointSize()  : Untuk mengetahui ukuran dari font output berupa float
Penggunaan

textEdit.setFontPointSize(50)
print(textEdit.fontPointSize())
Python

fontUnderline()  : Untuk mengetahui apakah font underline atau tidak. output berupa boolean
Penggunaan

textEdit.setFontUnderline(True)
print(textEdit.fontUnderline())
Python

isReadOnly()  : Untuk mengetahui apakah text edit read only atau tidak. output berupa boolean
Penggunaan

textEdit.setReadOnly(True)
print(textEdit.isReadOnly())
Python

isUndoRedoEnabled()  : Untuk mengetahui apakah text edit aktif untuk undo dan redo nya atau tidak. output berupa boolean
Penggunaan

textEdit.setUndoRedoEnabled(True)
print(textEdit.isUndoRedoEnabled())
Python

lineWrapColumnOrWidth() / setLineWrapColumnOrWidth()  : Properti ini mengatur posisi (dalam piksel atau kolom tergantung pada mode wrap nya) tempat teks akan wrap.
Penggunaan

textEdit.setLineWrapColumnOrWidth(20)
print(textEdit.lineWrapColumnOrWidth())
Python

lineWrapMode() / setLineWrapMode()  : Properti ini menangani wrap mode berdasarkan template
# QTextEdit.NoWrap
# QTextEdit.WidgetWidth
# QTextEdit.FixedPixelWidth
# QTextEdit.FixedColumnWidth

Penggunaan

textEdit.setLineWrapMode(QtWidgets.QTextEdit.FixedPixelWidth)
print(textEdit.lineWrapMode())
Markup

mergeCurrentCharFormat(format)  : Digunakan untuk menambahkan format yang sudah ada. bedanya dengan setCurrentCharFormat(format) adalah kalau setCurrentFormat menghapus format yang sudah ada

Penggunaan

#menyimpan format default
old_format = textEdit.currentCharFormat()
# Membuat data dengan format
names = ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"]
for name in names:
    color = QtGui.QColor(*random.sample(range(255), 3))
    color_format = textEdit.currentCharFormat()
    color_format.setForeground(color)
    textEdit.setCurrentCharFormat(color_format)
    textEdit.insertPlainText(name + "\n")
# Menabambahkan format italic
old_format.setFontItalic(True)
textEdit.mergeCurrentCharFormat(old_format)
Markup

moveCursor (operation[, mode=QTextCursor.MoveAnchor]) : Untuk memindahkan posisi kursor.

Operation yang bisa anda gunakan
NoMove,Start,StartOfLine,StartOfBlock,StartOfWord,PreviousBlock,PreviousCharacter,PreviousWord,Up,Left,WordLeft,End,EndOfLine,EndOfWord,EndOfBlock,NextBlock,NextCharacter,NextWord,Down,Right,WordRight,NextCell,PreviousCell,NextRow,PreviousRow

Mode :
QTextCursor.MoveAnchor : Text tidak terseleksi
QTextCursor.KeepAnchor : Text terseleksi

Penggunaan

textEdit.moveCursor(QtGui.QTextCursor.Start,QtGui.QTextCursor.MoveAnchor)
#textEdit.moveCursor(QtGui.QTextCursor.NextWord,QtGui.QTextCursor.KeepAnchor)
textEdit.setFocus()
Python

overwriteMode() / setOverwriteMode(boolean) : Pengaturan apakah properti overwriteMode true atau false

Penggunaan

print(textEdit.overwriteMode())
textEdit.setOverwriteMode(True)
Python

setPlaceholderText() / placeholderText(boolean) : Pengaturan PlaceHolder

textEdit.setPlaceholderText (“placeholderText”)
print(textEdit.placeholderText())

print_() : Untuk mencetak text edit ke printer
Penggunaan

from PyQt5.QtPrintSupport import QPrintDialog, QPrinter
printer = QPrinter(QPrinter.HighResolution)
dialog = QPrintDialog(printer)
if dialog.exec_() == QPrintDialog.Accepted:
    textEdit.print_(printer)
Python

tabStopDistance() / setTabStopDistance(float) : Properti ini mengatur jarak penghentian tab dalam piksel. Secara default, properti ini berisi nilai 80 piksel.

penggunaan

textEdit.setTabStopDistance(20)
print(textEdit.tabStopDistance())
Python

tabChangesFocus() / setTabChangesFocus(b) : Untuk mengatur apakah ketika di pencet tab akan pindah widget ( meninggalkan text edit) atau tidak.

penggunaan

textEdit.setTabChangesFocus(True)
print(textEdit.tabChangesFocus())
Python

textBackgroundColor() : Melihat BackgroundColor.

penggunaan

print(textEdit.textBackgroundColor())
Python

textColor() : Melihat text color.

penggunaan

print(textEdit.textColor())
Python

textCursor() / setTextCursor(cursor) : Mengatur kursor yang terlihat.

penggunaan

cursor = textEdit.textCursor()
cursor.movePosition(QTextCursor.End)
textEdit.setTextCursor(cursor)
print(textEdit.textCursor())
textEdit.setFocus()
Python

setTextInteractionFlags(flag) / textInteractionFlags() : Menentukan bagaimana widget harus berinteraksi dengan input pengguna. Nilai default tergantung pada apakah QTextEdit bersifat read-only atau dapat diedit.

penggunaan

# NoTextInteraction - tidak ada interaksi dengan teks yang dimungkinkan
# TextSelectableByMouse - teks dapat dipilih melalui mouse dan disalin melalui menu konteks atau pintasan keyboard.
# TextSelectableByKeyboard - teks dapat dipilih melalui tombol kursor
# LinksAccessibleByMouse - hyperlink dapat disorot dan dibuka melalui mouse
# LinksAccessibleByKeyboard - hyperlink dapat difokuskan dengan tab dan dibuka melalui enter
# TextEditable - teks sepenuhnya dapat diedit
# TextEditorInteraction - default untuk editor teks, yang sesuai dengan kombinasi TextSelectableByMouse | TextSelectableByKeyboard | Teks Dapat Diedit
# TextBrowserInteraction - default untuk browser Qtext, sesuai dengan kombinasi TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard
self.textEdit.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
print(self.textEdit.textInteractionFlags())
Python

toHtm() : Untuk mengambil nilai dari text edit dan di rubah menjadi HTML format

penggunaan

print(textEdit.toHtm())
Python

toPlainText() : Untuk mengambil nilai dari text edit dan di rubah menjadi plain text format

penggunaan

print(textEdit.toPlainText())
Python

toMarkdown() : Untuk mengambil nilai dari text edit dan di rubah menjadi markdown format

penggunaan

print(textEdit.toMarkdown())
Python

setWordWrapMode(policy) / wordWrapMode() : Untuk mengator word wrap type

penggunaan

# Qt3DRender.QTextureWrapMode.Repeat / 1
# Qt3DRender.QTextureWrapMode.MirroredRepeat /2
# Qt3DRender.QTextureWrapMode.ClampToEdge /3
# Qt3DRender.QTextureWrapMode.ClampToBorder /4 ( Default )


textEdit.setWordWrapMode(4)
print(textEdit.wordWrapMode())
Python

createStandardContextMenu(pos) : Untuk membuat menu di text edit
penggunaan

def setupUi(self, Form)
    self.textEdit.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
    self.textEdit.customContextMenuRequested.connect(self.my_contextMenuEvent)
def my_contextMenuEvent(self,event):
    menu = self.textEdit.cre
ateStandardContextMenu()
    menu.addActions(self.textEdit.actions())
    self.action= QtWidgets.QAction ()
    self.action.setObjectName('action')
    self.action.setText ('New Action 1')
    self.action.triggered.connect (self.rubahFont)
    menu.addAction(self.action)
    menu.exec(QtGui.QCursor.pos())
def rubahFont(self):
    font = QtGui.QFont()
    font.setPointSize(16)
    font.setFamily("arial")
    font.setBold(True)
    font.setUnderline(True)
    font.setItalic(True)
    self.textEdit.setCurrentFont(font)
Python