(Python dan PyQt4) Dokumen editor versi 4

BelajarPython - Assalamualaikum wr. wb.

Haii.. Jumpa lagi temen - temen.. Pada kesempatan kali ini saya akan mencoba untuk melanjutkan atau mengupgrade versi dari aplikasi sebelumnya.. Walaupun perubahan nya tidak terlalu mentereng, tapi saya rasa akan sangat bagus untuk variasi sajaa.. nah penasaran kan... Yuk langsung saja kita simak potingan kali ini temen - temen....

Pengenalan aplikasi yang akan kita buat.

Oke saya jelaskan lebih rinci lagi ya aplikasi yang akan kita buat pada postingan kali ini.. Jadi, seperti yang sudah saya katakan di atas, aplikasi yang akan saya buat kali ini merupakan penerus dari aplikasi dokumen editor versi ketiga.. Walaupun dengan perubahah yang tak terlalu mentereng..

Pada versi ke empat kali ini, saya akan mencoba untuk menambahkan sebuah fitur informasi kolom dan baris dari kusor yang ada pada lembar kerja.. Jadi, fitur ini lebih cocok sebagai variasi dan informasi saja ya temen - temen..

Ya memang kurang mentereng,, tapi, saya rasa akan lebih manis jika saya tambahkan variasi yang satu ini.. Jika kalian kurang suka dengan perubahan versi 4 ini, kalian bisa langsung saja lanjut ke versi 5 ya temen - temen... :)

Nah, untuk kalian yang ingin melihat perkembangan tiap versinya, kalian bisa KLIK DISINI. Dimana saya telah membuat rangkumannya beserta penjelasan fitur - fitur tiap versinya..

Spesifikasi dan fitur dokumen editor versi 4.0 di python.

Oya perlu kalian ketahui lagi.. Modul untuk membuat tampilan dokumen editor ini saya menggunakan pyQt4... Untuk proses install nya, kalian BISA KLIK DISINI. Dan untuk lebih jelasnya mengenai aplikasi kali ini, simak penjabaran spesifikasi berikut ini ya temen - temen....

Nama: mn-dokumen 4.0
Versi: 4.0
Platform: Python 3.x
Modul: PyQt4. Klik disini untuk instalasi PyQt4.
Baris Code: kurang lebih 200 baris code program.
Fitur: informasi kolom dan baris kursor pada lembar kerja.
syarat menjalankan: install python 3.x dan PyQt4, punya editor teks atau IDE.
Cara menjalankan: install python 3 dan PyQt4, copy dan paste code program pada editor atau IDE, simpan dalam file python(ekstensi .py), lalu jalankan.


Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...

Code program untuk membuat aplikasi dokumen editor versi 4.0 PyQt4 python.

Nah biar tidak penasaran, yuk langsung saja simak sama - sama code program untuk membuat aplikasi dokumen editor ini... Silahkan di simak di bawah ini ya temen - temen.. Let’s check it out...

import sys, webbrowser
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import Qt

class Main(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self, None)
        self.initUI()
        QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('sgi'))

    def initUI(self):
        # ---------Window settings --------------------------------
        self.buatLembarKerja()
        self.buatToolbar1()
        self.buatToolbar2()
        self.buatStatusBar()
        self.setScroll()
        # ------- Toolbar --------------------------------------

        # -- Upper Toolbar --

    def buatToolbar1(self):
        self.perintahCut = QtGui.QAction("Cut", self)
        self.perintahCut.setStatusTip("Copy ke klipboard dan hapus teks yang di block")
        self.perintahCut.setShortcut("Ctrl+X")
        self.perintahCut.triggered.connect(self.Cut)

        self.perintahCopy = QtGui.QAction("Copy", self)
        self.perintahCopy.setStatusTip("Copy ke klipboard teks yang di block")
        self.perintahCopy.setShortcut("Ctrl+C")
        self.perintahCopy.triggered.connect(self.Copy)

        self.perintahPaste = QtGui.QAction("Paste", self)
        self.perintahPaste.setStatusTip("Paste teks dari clipboard")
        self.perintahPaste.setShortcut("Ctrl+V")
        self.perintahPaste.triggered.connect(self.Paste)

        self.perintahUndo = QtGui.QAction("Undo", self)
        self.perintahUndo.setStatusTip("Batalkan perintah terakhir")
        self.perintahUndo.setShortcut("Ctrl+Z")
        self.perintahUndo.triggered.connect(self.Undo)

        self.perintahRedo = QtGui.QAction("Redo", self)
        self.perintahRedo.setStatusTip("Batalkan perintah Undo terakhir")
        self.perintahRedo.setShortcut("Ctrl+Y")
        self.perintahRedo.triggered.connect(self.Redo)

        self.perintahKeluar = QtGui.QAction("Exit", self)
        self.perintahKeluar.setStatusTip("Ingin Keluar ?")
        self.perintahKeluar.triggered.connect(self.exit)

        self.toolbar = self.addToolBar("Options")
        self.toolbar.addSeparator()
        self.toolbar.addAction(self.perintahCut)
        self.toolbar.addAction(self.perintahCopy)
        self.toolbar.addAction(self.perintahPaste)
        self.toolbar.addAction(self.perintahUndo)
        self.toolbar.addAction(self.perintahRedo)
        self.toolbar.addSeparator()
        self.toolbar.addAction(self.perintahKeluar)
        self.addToolBarBreak()
        self.toolbar.setMovable(False)

        self.addToolBar(QtCore.Qt.LeftToolBarArea, self.toolbar)

        # -- Lower Toolbar --

    def buatToolbar2(self):
        perintahTebal = QtGui.QAction("Bold", self, checkable=True)
        perintahTebal.setStatusTip("Tebalkan Teks")
        perintahTebal.setShortcut("Ctrl+B")
        perintahTebal.triggered.connect(self.Bold)

        perintahMiring = QtGui.QAction("Italic", self, checkable=True)
        perintahMiring.setStatusTip("Miringkan Teks")
        perintahMiring.setShortcut("Ctrl+I")
        perintahMiring.triggered.connect(self.Italic)

        perintahGarisBawah = QtGui.QAction("Underline", self, checkable=True)
        perintahGarisBawah.setStatusTip("Beri Garis bawah Teks")
        perintahGarisBawah.setShortcut("Ctrl+U")
        perintahGarisBawah.triggered.connect(self.Underl)

        self.formatbar = self.addToolBar("Format")
        self.formatbar.addAction(perintahTebal)
        self.formatbar.addAction(perintahMiring)
        self.formatbar.addAction(perintahGarisBawah)
        self.toolbar.setMovable(False)
        self.formatbar.setMovable(False)

    def buatLembarKerja(self):
        # ------- Text Edit -----------------------------------
        widget = QtGui.QWidget(self)
        self.mainLayout = QtGui.QHBoxLayout(widget)

        self.text = QtGui.QTextEdit(self)
        self.text.setMaximumWidth(793.700787402)
        self.text.setMinimumWidth(793.700787402)
        self.text.setMinimumHeight(1122.519685039)
        self.mainLayout.addWidget(self.text)
        self.text.setFocus()
        self.setCentralWidget(widget)

        # --------dokumen---------
        self.dokumen = QtGui.QTextDocument(self)
        self.text.setDocument(self.dokumen)
        self.text.undoAvailable.connect(self.undoTersedia)
        self.text.redoAvailable.connect(self.redoTersedia)

    def undoTersedia(self, b):
        self.perintahUndo.setEnabled(b)

    def redoTersedia(self, b):
        self.perintahRedo.setEnabled(b)

    def buatStatusBar(self):
        # ------- Statusbar ------------------------------------
        self.status = self.statusBar()
        self.text.cursorPositionChanged.connect(self.CursorPosition)

    def setScroll(self):
        # mengatur scroll
        self.scrollArea = QtGui.QScrollArea()
        self.scrollArea.setWidget(self.text)
        self.scrollArea.setBackgroundRole(QtGui.QPalette.Mid)
        self.scrollArea.setAlignment(Qt.AlignCenter)

        self.mainLayout.addWidget(self.scrollArea)
            # -------- Toolbar slots -----------------------------------

    def Undo(self):
        self.text.undo()

    def Redo(self):
        self.text.redo()

    def Cut(self):
        self.text.cut()

    def Copy(self):
        self.text.copy()

    def Paste(self):
        self.text.paste()

    def CursorPosition(self):
        line = self.text.textCursor().blockNumber()
        col = self.text.textCursor().columnNumber()
        linecol = ("Line: " + str(line) + " | " + "Column: " + str(col))
        self.status.showMessage(linecol)

    def Bold(self):
        w = self.text.fontWeight()
        if w == 50:
            self.text.setFontWeight(QtGui.QFont.Bold)
        elif w == 75:
            self.text.setFontWeight(QtGui.QFont.Normal)

    def Italic(self):
        i = self.text.fontItalic()

        if i == False:
            self.text.setFontItalic(True)
        elif i == True:
            self.text.setFontItalic(False)

    def Underl(self):
        ul = self.text.fontUnderline()

        if ul == False:
            self.text.setFontUnderline(True)
        elif ul == True:
            self.text.setFontUnderline(False)

    def exit(self):
        self.close()

    def closeEvent(self, event):
        self.destroy()

def main():
    app = QtGui.QApplication(sys.argv)
    main = Main()
    main.show()

    main.setGeometry(0, 0, 1000, 600)
    main.setWindowTitle('Dokumen Editor -> mn-belajarpython.blogspot.co.id')

    screen = QtGui.QDesktopWidget().screenGeometry()
    size = main.geometry()
    main.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)

    main.text.setFocus()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()


Nah itu dia temen - temen code program nya.. nah lalu sepertii apa ya temen - temen tampilan yang akan di hasilkan dari code program di atas? Nah, biar gak penasaran, langsung saja di simak gambar yang ada di bawah ini ya...



Nah itu dia temen - temen hasil dari code program di atas.. Bisa kita lihat ya.. Pada sisi bawah window, sudah ada informasi kolom da baris dari posisi kursor lembar kerja aplikasi tersebut ya..


Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...

Penjelasan Code program untuk membuat aplikasi dokumen editor versi 4.0.

nah pada bagian ini saya akan mencoba untuk menjelaskan code program yang telah saya bagikan diatas tadi yaa.. Hal ini saya lakukan agar kalian bisa memahami code program untuk membuat aplikasi dokumen editor ini... Yuk tanpa lama - lama lagi langsung saja kita simak sama - sama penjelasan saya di bawah ini...

[NOTE : Teks yang berwarna merah pada penjelasan merupakan "Code program" yang di tambahkan pada versi kali ini. Dan tidak ada di versi sebelumnya]


import sys  //digunakan untuk mengimpor modul ‘sys’
from PyQt4 import QtGui, QtCore  //digunakan untuk mengimport ‘QtGui’ dan ‘QtCore’
from PyQt4.QtCore import Qt  //digunakan untuk import ‘Qt’ dari QtCore.

class Main(QtGui.QMainWindow):  //digunakan untuk membuat class utama untuk membuat class utama dari aplikasi Dokumen editor. Dengan memberikan turunan dari class ‘QtGui.QMainQindow’.
    def __init__(self):  //merupakan konstrutor dari class ‘main’.
        QtGui.QMainWindow.__init__(self, None)  //digunakan untuk memanggil class ‘QtGui.QmainWindow’ nya.
        self.initUI()  //digunakan untuk menjalankan metode dengan nama ‘initUI’.
        QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('sgi'))  //digunakan untuk merubah style keseluruhan dari window aplikasi.

    def initUI(self):  //merupakan metode dengan nama ‘initUI’ yang digunakan untuk menjalankan beberapa metode.
        # ---------Window settings --------------------------------  //komentar
        self.buatLembarKerja()  //digunakan untuk menjalankan metode dengan nama ‘buatLembarKerja’.
        self.buatToolbar1() //digunakan untuk menjalankan metode dengan nama ‘buatToolbar1’.
        self.buatToolbar2() //digunakan untuk menjalankan metode dengan nama ‘buatToolbar2’.
        self.buatStatusBar() //digunakan untuk menjalankan metode dengan nama ‘buatStatusbar’.
        self.setScroll()  //digunakn untuk menjalankan metode dengan nama ‘setScroll’.
        # ------- Toolbar --------------------------------------  //komentar

    def buatToolbar1(self):  //digunakan untuk membuat metode dengan nama ‘buatToolbar1’. Yang akan digunakan untuk membuat toolbar pertama yang ada di kiri area kerja.

        self.perintahCut = QtGui.QAction("Cut", self)  //digunakan untuk membuat sebuah perintah untuk tombol cut. Dan disimpan kedalam variabel ‘perintahCut’.
        self.perintahCut.setStatusTip("Copy ke klipboard dan hapus teks yang di block")  //membuat status tip ketika kursor ada di atas tombol nantinya
        self.perintahCut.setShortcut("Ctrl+X")  //digunakan untuk membuat shortcut untuk perintah cut. Dengan shortcut ‘Ctrl+X’
        self.perintahCut.triggered.connect(self.Cut)  //digunakan untuk menghubungkan perintah cut untuk menjalankan metode ‘cut’.

        self.perintahCopy = QtGui.QAction("Copy", self)  //digunakan untuk membuat sebuah perintah untuk tombol copy. Dan disimpan kedalam variabel ‘perintahCopy’.
        self.perintahCopy.setStatusTip("Copy ke klipboard teks yang di block")  //membuat status tip ketika kursor ada di atas tombol nantinya
        self.perintahCopy.setShortcut("Ctrl+C")  //digunakan untuk membuat shortcut untuk perintah copy. Dengan shortcut ‘Ctrl+C’
        self.perintahCopy.triggered.connect(self.Copy)  //digunakan untuk menghubungkan perintah copy untuk menjalankan metode ‘copy’.

        self.perintahPaste = QtGui.QAction("Paste", self)  //digunakan untuk membuat sebuah perintah untuk tombol paste. Dan disimpan kedalam variabel ‘perintahPaste’.
        self.perintahPaste.setStatusTip("Paste teks dari clipboard")  //membuat status tip ketika kursor ada di atas tombol nantinya
        self.perintahPaste.setShortcut("Ctrl+V")  //digunakan untuk membuat shortcut untuk perintah paste. Dengan shortcut ‘Ctrl+V’
        self.perintahPaste.triggered.connect(self.Paste)  //digunakan untuk menghubungkan perintah paste untuk menjalankan metode ‘paste’.

        self.perintahUndo = QtGui.QAction("Undo", self)  //digunakan untuk membuat sebuah perintah untuk tombol Undo. Dan disimpan kedalam variabel ‘perintahUndo’.
        self.perintahUndo.setStatusTip("Batalkan perintah terakhir")  //membuat status tip ketika kursor ada di atas tombol nantinya
        self.perintahUndo.setShortcut("Ctrl+Z")  //digunakan untuk membuat shortcut untuk perintah undo. Dengan shortcut ‘Ctrl+Z’
        self.perintahUndo.triggered.connect(self.Undo)  //digunakan untuk menghubungkan perintah undo untuk menjalankan metode ‘undo’.

        self.perintahRedo = QtGui.QAction("Redo", self)  //digunakan untuk membuat sebuah perintah untuk tombol cut. Dan disimpan kedalam variabel ‘perintahRedo’.
        self.perintahRedo.setStatusTip("Batalkan perintah Undo terakhir")  //membuat status tip ketika kursor ada di atas tombol nantinya
        self.perintahRedo.setShortcut("Ctrl+Y")  //digunakan untuk membuat shortcut untuk perintah Redo. Dengan shortcut ‘Ctrl+Y’
        self.perintahRedo.triggered.connect(self.Redo)  //digunakan untuk menghubungkan perintah redo untuk menjalankan metode ‘Redo’.

        self.perintahKeluar = QtGui.QAction("Exit", self)  //digunakan untuk membuat sebuah perintah untuk tombol keluar.
        self.perintahKeluar.setStatusTip("Ingin Keluar ?")  //membuat status tip ketika kursor ada di atas tombol nantinya
        self.perintahKeluar.triggered.connect(self.exit)  //digunakan untuk menghubungkan tombol ketika di klik untuk menjalankan metode ‘exit’.

        self.toolbar = self.addToolBar("Options")  //digunakan untuk membuat sebuah toolbar ‘option’. Yang di tampung ke dalam variabel toolbar.
        self.toolbar.addSeparator()  //digunakan untuk membuat sebuah garis batas.
        self.toolbar.addAction(self.perintahCut)  //digunakan untuk memasukkan perintah cut tadi kedalam toolbar di window.
        self.toolbar.addAction(self.perintahCopy)  //digunakan untuk memasukkan perintah copy tadi kedalam toolbar di window.
        self.toolbar.addAction(self.perintahPaste)  //digunakan untuk memasukkan perintah paste tadi kedalam toolbar di window.
        self.toolbar.addAction(self.perintahUndo)  //digunakan untuk memasukkan perintah undo tadi kedalam toolbar di window.
        self.toolbar.addAction(self.perintahRedo)  //digunakan untuk memasukkan perintah Redo tadi kedalam toolbar di window.
        self.toolbar.addSeparator()  //digunakan untuk membuat sebuah garis batas.
        self.toolbar.addAction(self.perintahKeluar)  //digunakan untuk memasukkan perintah tadi kedalam toolbar.
        self.addToolBarBreak()  //digunakan untuk memberikan batas penambahan toolbar.
        self.toolbar.setMovable(False)  //digunakan agar toolbar tidak bisa di pindah.

        self.addToolBar(QtCore.Qt.LeftToolBarArea, self.toolbar)  //digunakan untuk memasukkan toolbar ke samping lembar kerja.

    def buatToolbar2(self):  //digunakan untuk membuat metode dengan nama ‘buatToolbar2’. Yang akan digunakan untuk membuat toolbar kedua yang ada di atas area kerja.
        perintahTebal = QtGui.QAction("Bold", self, checkable=True)  //digunakan untuk mendefinisikan sebuah perintah yang ditampung kedalam variabel ‘perintahTebal’.
        perintahTebal.setStatusTip("Tebalkan Teks")  //menampilkan teks ‘tebalkan Teks’ saat kursor berada di atasnya.
        perintahTebal.setShortcut("Ctrl+B")  //memberikan shortcut untuk menjalankan perintah tersebut.
        perintahTebal.triggered.connect(self.Bold)  //digunakan untuk menghubungkan perintah ini untuk menjalankan metode dengan nama ‘Bold’.

        perintahMiring = QtGui.QAction("Italic", self, checkable=True)  //digunakan untuk mendefinisikan sebuah perintah yang ditampung kedalam variabel ‘perintahMiring’.
        perintahMiring.setStatusTip("Miringkan Teks")  //menampilkan teks ‘Miringkan Teks’ saat kursor berada di atasnya.
        perintahMiring.setShortcut("Ctrl+I")  //memberikan shortcut untuk menjalankan perintah tersebut.
        perintahMiring.triggered.connect(self.Italic)  //digunakan untuk menghubungkan perintah ini untuk menjalankan metode dengan nama ‘Italic’.

        perintahGarisBawah = QtGui.QAction("Underline", self, checkable=True)  //digunakan untuk mendefinisikan sebuah perintah yang ditampung kedalam variabel ‘perintahGarisBawah’.
        perintahGarisBawah.setStatusTip("Beri Garis bawah Teks")  //menampilkan teks ‘Beri Garis bawah Teks’ saat kursor berada di atasnya.
        perintahGarisBawah.setShortcut("Ctrl+U")  //memberikan shortcut untuk menjalankan perintah tersebut.
        perintahGarisBawah.triggered.connect(self.Underl)  //digunakan untuk menghubungkan perintah ini untuk menjalankan metode dengan nama ‘Underl’.

        self.formatbar = self.addToolBar("Format")  //membuat sebuah toolbar dengan nama ‘format’ dan disimpan ke dalam variabel ‘formatbar’.
        self.formatbar.addAction(perintahTebal)  //menambahkan perintah ‘perintahTebal’ ke dalam toolbar dengan variabel formatbar.
        self.formatbar.addAction(perintahMiring)  //menambahkan perintah ‘perintahMiring’ ke dalam toolbar dengan variabel formatbar.
        self.formatbar.addAction(perintahGarisBawah)  //menambahkan perintah ‘perintahGarisBawah’ ke dalam toolbar dengan variabel formatbar.
        self.formatbar.setMovable(False)  //membuat agar toolbar tidak bisa dipindah - pindah

    def buatLembarKerja(self):  //digunakan untuk membuat metode dengan nama ‘buatLembarKerja’ yang akan digunakan untuk membuat lembar kerjanya.
        # ------- Text Edit -----------------------------------
        widget = QtGui.QWidget(self)  //mendefinisikan sebuah widget
        self.mainLayout = QtGui.QHBoxLayout(widget)  //membuat sebuah layout utama dari aplikasi ini. Dengan memasukkan widget yang sudah kita definisikan tadi sebagai komponen utama yang ada ditengah.

        self.text = QtGui.QTextEdit(self)  //mendefinisikan atau membuat kolom teks nya. Yang kemudian disimpan ke dalam variabel ‘text’.
        self.text.setMaximumWidth(793.700787402)  //mengatur lebar maksimal dari kolom teks menjadi angka yang ada pada parameter.
        self.text.setMinimumWidth(793.700787402)  //mengatur lebar minimal dari kolom teks menjadi angka yang ada pada parameter.
        self.text.setMinimumHeight(1122.519685039)  //mengatur tinggi maksimal dari kolom teks menjadi angka yang ada pada parameter.
        self.mainLayout.addWidget(self.text)  //digunakan untuk memasukkan kolom teks ke widget utama aplikasi.
        self.text.setFocus()  //mengatur agar saat aplikasi dijalankan, maka kursor akan fokus ke kolom teks.
        self.setCentralWidget(widget) //membuat agar ‘widget’ menjadi widget atau komponen utama.

        # --------dokumen---------  //komentar
        self.dokumen = QtGui.QTextDocument(self)  //mendefinisikan ‘QTextDocument’ yang ditampung ke dalam variabel ‘self.dokumen’.
        self.text.setDocument(self.dokumen)  //mengatur kolom text yang ditampung ke dalam variabel ‘text’ menjadi sebuah text editor agar bisa kita bold, meiringkan dan kita berikan berbagai variasi
        self.text.undoAvailable.connect(self.undoTersedia)  //digunakan untuk menghubungkan ketersediaan undo ke metode dengan nama ‘undoTersedia’
        self.text.redoAvailable.connect(self.redoTersedia)  //digunakan untuk menghubungkan ketersediaan redo ke metode dengan nama ‘redoTersedia’

    def undoTersedia(self, b):  //digunakan untuk membuat metode dengan nama ‘undoTersedia’ yang digunakan untuk menerima boolean ketersediaan undo. False jika tidak tersedia dan true jika tersedia. True atau false tersebut di tampung ke dalam variabel ‘b’.
        self.perintahUndo.setEnabled(b)  //digunakan untuk menghidupkan atau mematikan tombol ‘undo’ sesuai ketersediaan nya.

    def redoTersedia(self, b):  //digunakan untuk membuat metode dengan nama ‘redoTersedia’ yang digunakan untuk menerima boolean ketersediaan redo. False jika tidak tersedia dan true jika tersedia. True atau false tersebut di tampung ke dalam variabel ‘b’.
        self.perintahRedo.setEnabled(b)  //digunakan untuk menghidupkan atau mematikan tombol ‘redo’ sesuai ketersediaan nya.

    def buatStatusBar(self):  //digunakan untuk membuat metode dengan nama ‘buatStatusBar’. Yang akan digunakan untuk membuat sebuah status bar si bawah window aplikasi.
        # ------- Statusbar ------------------------------------
        self.status = self.statusBar()  //digunakan untuk memanggil statusbar window aplikasi dan  disimpan keadalam variabel ‘status’.
        self.text.cursorPositionChanged.connect(self.CursorPosition)  //digunakan untuk memanggil metode dengan nama ‘CursorPosition’ saat posisi kursor di area kerja berubah.

    def setScroll(self):  //digunakan untuk membuat metode dengan nama ‘setScroll’ yang akan digunakan untuk mengatur scrollbar
        # mengatur scroll  //komentar
        self.scrollArea = QtGui.QScrollArea()  //digunakan untuk mendefinisikan sebuah scrollbar yang ditampung ke dalam variabel ‘scrollArea’.
        self.scrollArea.setWidget(self.text)  //mengatur fungsi scrollbar sebagai  scroll dari kolom text yang sudah kita buat pada metode sebelumnya.
        self.scrollArea.setBackgroundRole(QtGui.QPalette.Mid)  //mengatur style dari background tempat widget yang di scroll
        self.scrollArea.setAlignment(Qt.AlignCenter)  //mengatur agar widget nya (kolom teks) berada di posisi tengah

        self.mainLayout.addWidget(self.scrollArea)  //memasukkan scroll nya ke dalam window

            # -------- Toolbar slots -----------------------------------  //komentar


    def Undo(self):  //digunakan untuk membuat metode dengan nama ‘undo’ yang akan digunakan untuk undo.
        self.text.undo()  //digunakan untuk melakukan undo.

    def Redo(self):  //digunakan untuk membuat metode dengan nama ‘redo’ yang akan digunakan untuk redo.
        self.text.redo()  //digunakan untuk melakukan redo.

    def Cut(self):  //digunakan untuk membuat metode dengan nama ‘Cut’ yang akan digunakan untuk cut.
        self.text.cut()  //digunakan untuk melakukan perintah cut.

    def Copy(self):  //digunakan untuk membuat metode dengan nama ‘Copy’ yang akan digunakan untuk Copy.
        self.text.copy()  //digunakan untuk melakukan perintah copy.

    def Paste(self):  //digunakan untuk membuat metode dengan nama ‘Paste’ yang akan digunakan untuk paste.
        self.text.paste()  //digunakan untuk melakukan perintah paste.

    def CursorPosition(self):  //digunakan untuk membuat metode dengan nama ‘CursorPosition’ yang akan digunakan untuk mengupdate posisi kolom dan baris pada statusbar.
        line = self.text.textCursor().blockNumber()  //memperoleh lokasi atau posisi baris kursor di lembar kerja. Dan ditampung ke dalam variabel ‘line’.
        col = self.text.textCursor().columnNumber()  //memperoleh lokasi atau posisi kolom kursor di lembar kerja. Dan ditampung ke dalam variabel ‘col.
        linecol = ("Line: " + str(line) + " | " + "Column: " + str(col))  //digunakan untuk membuat format tampilan kolom dan baris di status bar. Dan ditampung kedalam variabel ‘linecol’.
        self.status.showMessage(linecol)  //digunakan untuk menampilkan posisi kolom dan baris kursor pada lembar kerja dengan format yang telah dibuat.

    def Bold(self):  //membuat sebuah metode dengan nama ‘bold’ dan berfungsi sebagai perintah untuk menebalkan teks atau menormalkan teks.
        w = self.text.fontWeight()  //digunakan untuk mengecek nilai dari font weight lalu ditampung ke dalam variabel ‘w’
        if w == 50:  //digunakan untuk mengecek nilai di dalam variabel ‘w’ apakah bernilai 50. Yang artinya mengecek apakah font tidak bernilai ‘bold’.
            self.text.setFontWeight(QtGui.QFont.Bold)  //digunakan untuk membuat teks menjadi tebal.
        elif w == 75:  //digunakan untuk mengecek apakah nilai dari variabel ‘w’ apakah bernilai 75. Yang artinya apakah font sedang tebal atau bold.
            self.text.setFontWeight(QtGui.QFont.Normal)  //digunakan untuk menormalkan teks yang tebal.

    def Italic(self):  //membuat sebuah metode dengan nama ‘Italic’ dan berfungsi sebagai perintah untuk memiringkan teks atau menormalkan teks.
        i = self.text.fontItalic()  //digunakan untuk mengecek teks berada di dalam kondisi ‘italic’ atau mirik. Yang akan bernilai false jika normal dan true jika italic. Dan ditampung ke dalam variabel ‘i’.

        if i == False:  //digunakan untuk mengecek apakah variabel 
‘i’ bernilai false. Yang aritnya apakah teks tidak sedang italic.
            self.text.setFontItalic(True)  //digunaka untuk membuat font menjadi italic atau miring
        elif i == True:  //digunakan untuk mengecek apakah variabel 
‘i’ bernilai true. Yang aritnya apakah teks sedang italic.
            self.text.setFontItalic(False)  //digunaka untuk membuat font menjadi tidak italic atau tidak miring. Dan bisa kita katakn untuk menormalkan teks.

    def Underl(self):  //membuat sebuah metode dengan nama ‘Underl’ dan berfungsi sebagai perintah untuk menggaris bawahi teks atau menormalkan teks.
        ul = self.text.fontUnderline()  //digunakan untuk mengecek teks berada di dalam kondisi ‘underline’ atau bergaris bawah. Yang akan bernilai false jika normal dan true jika begaris bawah. Dan ditampung ke dalam variabel ‘ul’.
        if ul == False:  //digunakan untuk mengecek apakah variabel 
‘ul’ bernilai false. Yang aritnya apakah teks tidak sedang bergaris bawah.
            self.text.setFontUnderline(True)  //digunakan untuk membuat teks bergaris bawah
        elif ul == True:  //digunakan untuk mengecek apakah variabel 
‘ul’ bernilai true. Yang aritnya apakah teks tidak sedang bergaris bawah.
            self.text.setFontUnderline(False)  //menormalkan teks. Atau membuat teks tidak bergaris bawah.

    def exit(self):  //digunakan untuk membuat metode dengan nama ‘exit’. Yang akan digunakan untuk menjalankan perintah untuk menutup window.
        self.close()  //digunakan untuk menutup window.

    def closeEvent(self, event):  //membuat metode dengan nama ‘closEvent’ yang akan di jalankan ketika aplikasi kita close atau kita tutup.
        self.destroy()  //digunakan untuk menutup aplikasi.

def main():  //membuat metode dengan nama ‘main’ yang yang berisi untuk pembuatan window dan pemanggilan class utama.
    app = QtGui.QApplication(sys.argv)  //digunakna untuk mendefinisikan sebuah window aplikasi.
    main = Main()  //memanggil class dengan nama ‘Main’ yang sudah di buat di atas.
    main.show()  //menampilkan window di class ‘Main’ tersebut

    main.setGeometry(0, 0, 1000, 600)  //digunakan untuk menentukan posisi window saat muncul. Yang saya berikan pada posisi 0 0 layar monitor kalian. Dan dan lebar window sebesar 1000 dan tingginya 600.
    main.setWindowTitle('Dokumen Editor -> mn-belajarpython.blogspot.co.id')  //digunakan untuk mengubah judul dari window..

    screen = QtGui.QDesktopWidget().screenGeometry()   //digunakan untuk mendapatkan resolusi layar kalian.
    size = main.geometry()  //digunakan untuk mendapatkan ukuran layar aplikasi dokumen editor ini.
    main.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)  //memindahkan window aplikasi dokumen editor yang sebelumnya ada di posisi  0 0 ke bagian tengah layar kalian.

    main.text.setFocus()  //mengatur agar yang terpilih adalah kolom teks atau lembar kerja. Bukan elemen lain. 
    sys.exit(app.exec_())  //digunakan agar window tidak langsung close saat kita jalankan.

if __name__ == "__main__":  //memastikan agar code di bawah ini akan di jalankan pertama kali ketika file di eksekusi.

    main()  //digunakan untuk menjalankan metode dengan nama ‘main’ yang sudah di buat di atas.


nah itu dia temen - temen penjelasan dari code program diatas.. Semoga penjelasan yang sudah saya berikan tadi dapat sedikit membantu penjelasan code program untuk membuat aplikasi dokumen editor versi keempat kali ini ya...

Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...




Dan itu dia temen - temen cara untuk membuat aplikasi dokumen editor yang sangat sederhana ini.. Semoga apa yang telah saya sampaikan di atas dapat memberikan manfaat bagi kalian yaa... Dan tentu saja saya harap dapat menjadikan referensi untuk membuat sebuah produk atau untuk belajar python..

Oke sampai disini dulu ya temen - temen bahasan pada postingan saya kali ini,, jangan lupa baca tutorial menarik lainnya ya.. Dan jangan lupa berkomentar atau berikan masukan atau kritikan kalian ya... Terimakasih.. Sampai jumpa di tutorial yang lainnya ya...

Wassalamualaikum wr.wb.
Previous
Next Post »
Thanks for your comment