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;gt;halo apakabar&amp;lt;/a&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
Penggunaan
textEdit.setAcceptRichText(True)
print(textEdit.acceptRichText())
Penggunaan
from PyQt5.QtCore import Qt
textEdit.setAlignment (Qt.AlignCenter)
print(textEdit.alignment())
Penggunaan
textEdit.setAutoFormatting(QtWidgets.QTextEdit.AutoAll)
print(textEdit.autoFormatting())
Penggunaan
textEdit.setReadOnly(True)
print(textEdit.canPaste())
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)
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")
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)
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())
Penggunaan
#merubah lebar cursor
self.textEdit.setCursorWidth(5)
#mendapatkan cursor widht
print(self.textEdit.cursorWidth ())
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)