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")

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

textEdit.insertHtml("html code")

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")

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).")

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

textEdit.setPlainText("test")

setText(text) : Untuk mengganti text ke text edit

textEdit.setText("test")

clear() : Untuk menghapus semua data di text edit

textEdit.clear()

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

	
textEdit.copy()

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

textEdit.cut()

paste() : Untuk menghapus text dari hasil copy

textEdit.paste()

redo() : Perintah untuk redo

textEdit.redo()

undo() : Perintah untuk undo

textEdit.undo()

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")

selectAll() : Menseleksi semua text di textedit

	
textEdit.selectAll()

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)

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

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

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)

Setelah itu bisa anda terapkan untuk setCurrentFont

textEdit.setCurrentFont(font)

setFontFamily(fontFamily) : Mengatur Font familiy

textEdit.setFontFamily("arial")

setFontItalic(b) : Mengatur Font italic atau tidak

textEdit.setFontItalic(True)

setFontPointSize(s) : Mengatur ukuran font

textEdit.setFontPointSize(16)

setFontUnderline(b) : Mengatur underline atau tidak

textEdit.setFontUnderline(True)

setFontWeight(w) : Mengatur tebal dari font

	
textEdit.setFontWeight(100)

setTextBackgroundColor(c) : Mengatur background text

textEdit.setTextBackgroundColor (Qt.GlobalColor.red)

setTextColor(c) : Mengatur warna text

 

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

textEdit.zoomIn(1)

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

 
textEdit.zoomOut(1)

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())
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())
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())
canPaste()  : Untuk mengatur apakah bisa menerima perintah paste di text edit.

Penggunaan

 
textEdit.setReadOnly(True)

print(textEdit.canPaste())
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)
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")
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)
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())
cursorWidth () Â  : mengembalikan lebar dari cursor
Penggunaan
#merubah lebar cursor
self.textEdit.setCursorWidth(5) 
#mendapatkan cursor widht
print(self.textEdit.cursorWidth ())
 
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())

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())

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

self.textEdit.ensureCursorVisible()

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())

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))

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

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

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

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

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

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

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

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

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

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

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

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

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())

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())

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)

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()

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

Penggunaan

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

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)

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())

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())

textBackgroundColor() : Melihat BackgroundColor.

penggunaan

print(textEdit.textBackgroundColor())

textColor() : Melihat text color.

penggunaan

print(textEdit.textColor())

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

penggunaan

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

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())

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

penggunaan

print(textEdit.toHtm())

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

penggunaan

print(textEdit.toPlainText())

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

penggunaan

print(textEdit.toMarkdown())

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())

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)