(Python dan PyQt4) Dokumen editor versi 2

BelajarPython - Assalamualaikum wr. wb.

Hallo.. Jumpa lagi temen - temen.. Pada kesempatan kali ini saya akan mencoba untuk melanjutkan atau mengupdate versi dari aplikasi sebelumnya.. Walaupun perubahan nya tidak terlalu mentereng.., nah penasaran kan... Yk langsung saja Let’s check it out 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 pertama.. Walaupun dengann perubaha yang tak terlalu mentereng..

Aplikasi sebelumnya memang sangat minim fitur.. Dan pada versi ke dua ini, saya pun hanya menambahkan sedikit fitur saja.. Karena saya hanya menambahkan side bar saja dengan ditambahkan tombol exit saja.. Ya hanya itu saja.. Wew.. Benar - benar updetan yang kurang berguna ya,, hehe,,,

Ya memang kurang mentereng,, tapi dengan ini, saya harap kan kalian bisa paham dengan perkembangan tiap versinya.. Jika kalian kurang suka dengan perubahan versi 2 ini, kalian bisa langsung saja lanjut ke versi 3 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 2.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 2.0
Versi: 2.0
Platform: Python 3.x
Modul: PyQt4. Klik disini untuk instalasi PyQt4.
Baris Code: kurang lebih 137 baris code program.
Fitur: sidebar dan tombol exit.
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 2.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
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.setScroll()
        # ------- Toolbar --------------------------------------

        # -- Upper Toolbar --

    def buatToolbar1(self):
        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.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)

        space1 = QtGui.QLabel("  ", self)
        space2 = QtGui.QLabel(" ", self)

        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)
        self.setCentralWidget(widget)

        # --------dokumen---------
        self.dokumen = QtGui.QTextDocument(self)
        self.text.setDocument(self.dokumen)

    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 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..  Cukup pendek ya penambahan  code programnya.. Maklum saja.. Kan penambahannya sedikit... hehe.. 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.. Disamping kiri window ada sebuah side bar atau tempat toolbar.. Walaupun disana hanya ada satu toolbar saja.. Yaitu ‘exit’... Tapi nantinya akan ada penambahan toolbar disana pada versi berikutnya dan juga ada penamban fitur - fitur keren nya.. Makanya terus belajar di blog ini...


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 2.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.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.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.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

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