Aplikasi Menggambar PySide versi 1

BelajarPython - Assalamualaikum wr. wb.

Jumpa lagi temen - temen... Pada kesempatan kali ini, akan saya gunakan untuk mengajak kalian membuat aplikasi menggambar... Udah tau kan apa yang dimaksud aplikasi menggambar ini ? Saya harap kalian sudah paham ya.. Tapi, jika kalian tidak paham atau belum tau mengenai aplikasi menggambar ini, teruskan saja membaca nya hingga kalain paham aplikasi yang saya maksud kali ini....  Oke, Biar tidak penasaran langsung saja yuk kita simak sama - sama pengenalan aplikasi nya di bawah ini...

Pengenalan aplikasi yang akan kita buat.

Jadi, seperti yang sudah saya katakan di pembuka tadi, pada postingan kali ini saya akan membagikan atau mengajak kalian untuk membuat aplikasi menggambar.. dimana fungsi aplikasi menggambar ini mirip seperti aplikasi “paint” yang ada di OS windows.. Gimana udah pernah pakek kan ? Atau meinimal udah pernah liat kan? Jika belum, kalian bisa mencari taunya sendiri di google ya temen - temen...

Walaupun saya juga telah membuat aplikasi seperti ini sebelumnya, namun ada perbedaan disini... Dimana pada aplikasi sebelumnya saya buat menggunakan library tkinter.. Jika kalian mau baca kalian BISA KLIK DISINI ya temen - temen.. Dan kali ini saya akan membuat aplikasi menggambar tersebut menggunakan library yang berbeda.. Ya kali ini saya akan menggunakan library PySide dengan fungsi dan tampilan yang lebih bagus dan lebih baik...

Pada postingan kali ini, saya akan memposting aplikasi menggambar versi 1 atau yang pertama.. Dimana pada versi kali ini tidak banyak yang dapat dilakukan oleh aplikasi ini... Karena hanya terdapat sebuah kanvas putih yang dapat di corat coret saja menggunakan kursor... Ya hanya itu saja...

Oya, perlu kalian ketahui, aplikasi ini saya posting dengan berbagai versi.. Yang akan saya posting secara terpisah tiap versinya... Dan tentu saja, tiap versinya ada penambahan fitur yang membuatnya semakin menarik.. Jika kalian ingin membaca daftar isi dan rincian lengkap nya, KALIAN BISA KLIK DISINI ya temen - temen...

Rincian Lengkap Aplikasi Menggambar menggunakan PySide Versi 1.0

Pada segment kali ini, saya akan mencoba untuk memberikan rincian lengkap dari apalikasi menggambar yang akan saya posting kalii ini... dan seperti yang sudah saya katakan di atas tadi ya.. Aplikasi kali ini menggunakan library PySide. Dimana untuk menjalankannya, tentu saja harus menginstallnya terlebih dahulu... Dan tenang saja, karena saya sudah membuatkan tutorial instalasinya... Kalian bisa KLIK DISINI untuk membacanya....

Oke, langsung saja yuk kita simak sama - sama rincian lengkap nya di bawah ini...


Nama: mn-Drawing 1.0
Versi: 1.0 | klik disini untuk membaca versi selanjutnya.
Platform: Python 3.x
Modul: PySide. Klik disini untuk menginstallnya.
Baris Code: kurang lebih 111 baris code program.
Terdiri dari: 2 class dan 11 metode.
Fitur: mencoret - coret kanvas putih menggunakan kursor.
syarat menjalankan: install python 3.x dan PySide, punya editor teks atau IDE.
Cara menjalankan: install python 3 dan PySide, 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 aplikasi Menggambar menggunakan PySide versi 1.0

Nah pada segment kali ini, merupakan segment yang paling penting.. Dan mungkin menjadi segment utama.. Karena, pada segment kali ini, saya akan memberiikan code program untu membuat aplikasi menggambar versi kali ini.. Biar tidak penasaran, langsung saja yuk kita simak sama - sama code program nya di bawah ini... Silahkan copy, paste dan coba sendiri code programnya.. hehe


from PySide import QtCore, QtGui

class AreaKanvas(QtGui.QWidget):
    def __init__(self, parent=None):
        super(AreaKanvas, self).__init__(parent)

        self.parent = parent

        self.setAttribute(QtCore.Qt.WA_StaticContents)
        self.scribbling = False
        self.myPenWidth = 1
        self.myPenColor = QtCore.Qt.blue
        self.image = QtGui.QImage()
        self.lastPoint = QtCore.QPoint()

    def mousePressEvent(self, event):

        if event.button() == QtCore.Qt.LeftButton:
            self.lastPoint = event.pos()
            self.pensil = self.lastPoint
            self.scribbling = True

            self.awalX = event.pos().x()
            self.awalY = event.pos().y()

    def mouseMoveEvent(self, event):
        if (event.buttons() & QtCore.Qt.LeftButton) and self.scribbling:
            self.drawLineTo(event.pos())
            self.pensil = event.pos()
            self.update()

    def mouseReleaseEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton and self.scribbling:
            self.drawLineTo(event.pos())
            self.scribbling = False
            self.rectTerakhir = None
            self.update()

    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        painter.drawImage(QtCore.QPoint(0, 0), self.image)

    def resizeEvent(self, event):
        if self.width() > self.image.width() or self.height() > self.image.height():
            newWidth = max(self.width() + 128, self.image.width())
            newHeight = max(self.height() + 128, self.image.height())
            self.resizeImage(self.image, QtCore.QSize(newWidth, newHeight))
            self.update()

        super(AreaKanvas, self).resizeEvent(event)

    def drawLineTo(self, endPoint):
        painter = QtGui.QPainter(self.image)
        painter.setPen(QtGui.QPen(self.myPenColor, self.myPenWidth, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin))

        painter.drawLine(self.pensil, endPoint)

    def resizeImage(self, image, newSize):
        if image.size() == newSize:
            return

        newImage = QtGui.QImage(newSize, QtGui.QImage.Format_RGB32)
        newImage.fill(QtGui.qRgb(255, 255, 255))
        painter = QtGui.QPainter(newImage)
        painter.drawImage(QtCore.QPoint(0, 0), image)
        self.image = newImage

    def penWidth(self):
        return self.myPenWidth

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        widgetInti = QtGui.QWidget()

        self.kanvas = AreaKanvas(self)
        self.mainLayout = QtGui.QVBoxLayout(widgetInti)
        self.kanvas.setMinimumHeight(500)
        self.kanvas.setMinimumWidth(500)
        self.kanvas.setMaximumWidth(500)
        self.kanvas.setMinimumHeight(500)
        self.mainLayout.setContentsMargins(0,0,0,0)
        self.setCentralWidget(widgetInti)

        self.setScroll()

        self.setWindowTitle("Painting -> Mn-belajarpython.blogspot.co.id")
        self.resize(700, 650)

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

        self.mainLayout.addWidget(self.scrollArea)


if __name__ == '__main__':

    import sys

    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())


Nah itu dia temen - temen code program nya.. Gimana ? Cukup panjang kan ? Hehe.. Tapi saya harap dapat kalian pahami dengan mudah ya... Dengan begitu proses belajar kalian akan lebih mudah juga tentunya.. Nah lalu, seperti apakah tampilan yang akan di hasilkan dari code program di atas? Langsung saja yuk kita simak sama - sama tampilannya di bawah ini...



Nah itu dia temen - temen tampilan yang akan di hasilkan dari code program di atas.. Ya hanya sebuah window dengan kanvas putih yang merupakan tempat untuk melukis atau menggambar... Dan seperti yang sudah saya katakan diatas, pada versi kali ini kita hanya bisa menggores - gores kan kursor saja pada kanvas.. Dan pada gambar di atas saya telah mencoba untuk menggoreskan kursor tersebut hingga membentuk alamat blog ini... Hehe

Penjelasan code program untuk membuat Aplikasi menggambar menggunakan PySide versi 1.0

Nah setelah saya membagikan code programnya, dan kalian juga sudah tau tampilannya, maka selanjutnya sekarang saya akan mencoba untuk menjelaskan code program yang sudah saya bagikan di atas tadi.. Hal ini saya lakukan agar dengan harapan dapat mempermudah pemahaman kalian untuk memahami code program tersebut... Oke, Langsung saja yuk kita simak sama penjelasannya di bawah ini....


from PySide import QtCore, QtGui  //digunakan untuk mengimport ‘QtCore’ dan ‘QtGui’  dari library PySide.

class AreaKanvas(QtGui.QWidget):  //digunakan untuknmembuat class dengan nama ‘AreaKanvas’ yang akan digunakan untuk membuat tempat menggambar Atau kanvasnya. Dengan menurunkan class ‘QtGui.QWidget’
    def __init__(self, parent=None):  //merupakan sebuah konstruktor dari class ‘AreaKanvas’.
        super(AreaKanvas, self).__init__(parent)  //digunakan untuk memanggil super class dari class ‘AreaKanvas’. Super class merupakan class parent atau induk yang menurunkan class ‘AreaKanvas’ ini.

        self.parent = parent  //digunakan untuk menampung nilai parameter ‘parent’ kedalam variabel parent.

        self.setAttribute(QtCore.Qt.WA_StaticContents)  //digunakan untuk membuat canvas menjadi static. Yang artinya, walaupun window di perbesar ataupun diperkecil, ukuran kanvas akan tetap dan tak akan berubah.
        self.scribbling = False  //digunakan untuk mendefinisikan variabel baru denan nama ‘scribbling’ yang akan digunakan untuk proses corat coret dengan kursor
        self.myPenWidth = 1  //digunakan untuk mendefinisikan tebal pena yang akan digunakan untuk mencoret kanvas. Dengan nilai 1 dan disimpan kedalam variabel ‘myPenWidth’
        self.myPenColor = QtCore.Qt.blue  //mendefinisikan sebuah variabel baru dengan nama ‘myPenColor’ dengan nilai warna biru. Dan akan digunakan untuk mewarnai pena atau cursor saat mencoret
        self.image = QtGui.QImage()  //digunakan untuk membuat variabel baru dengan nama ‘image’ yang menampung class ‘QtGui.Qimage()’
        self.lastPoint = QtCore.QPoint()  //membuat variabel baru dengan nama ‘lastPoint’ yang menampung class ‘Qpoint’ dan nantinya akan digunakan untuk mendapatkan titik koordinat kursor.

    def mousePressEvent(self, event):  //metode dengan nama ‘mousePressEvent’ yang merupakan sebuah metode yang akan dijalankan otomatis ketika kita meng klik mouse.

        if event.button() == QtCore.Qt.LeftButton:  //digunakan untuk mengecek apakah kita atau user mengklik kiri pada mouse
            self.lastPoint = event.pos()  //digunakan untuk mengubah nilai variabel ‘lastPoint’ menjadi posisi mouse saat diklik.
            self.pensil = self.lastPoint  //digunakan untuk menampung kembali nilai ‘lastPoint’ ke dalam variabel ‘pensil’
            self.scribbling = True  //digunakan untuk mengubah nilai variabel ‘scribbling’ menjadi ‘True’ sebagai penanda kalau mouse telah di klik.

            self.awalX = event.pos().x()  //digunakan untuk membuat atau mengubah nilai variabel ‘awalX’ yang saya isi dengan lokasi titik x mouse saat di klik
            self.awalY = event.pos().y()  //digunakan untuk membuat atau mengubah nilai variabel ‘awalY’ yang saya isi dengan lokasi titik Y mouse saat di klik

    def mouseMoveEvent(self, event):  //digunakan untuk membuat metode dengan nama ‘mouseMoveEvent’ yang akan dijalankan secara otomatis ketika mouse di pindahkan
        if (event.buttons() & QtCore.Qt.LeftButton) and self.scribbling:  //digunakan untuk memengecek apakah mouse sedang di klik kiri dan juga variabel ‘scribbling’ bernilai true
            self.drawLineTo(event.pos())  //digunakan untuk memanggil metode dengan nama ‘drawLineTo’ dengan memasukkan posisi mouse terkini sebagai parameter
            self.pensil = event.pos()  //digunakan untuk menampung posisi mouse terkini kedalam variabel ‘pensil.
            self.update()  //digunakan untuk meng update kanvas agar kita bisa langsung melihat gambar atau garis yang di hasilkan.

    def mouseReleaseEvent(self, event):  //digunakan untuk membuat metode dengan nama ‘mouseRealeaseEvent’ yang akan dijalankan secara otomatis ketika mouse dilepas dari klik nya
        if event.button() == QtCore.Qt.LeftButton and self.scribbling:  //digunakan untuk mengecek apakah yang ditekan atau diklik ada tombol kiri pada mouse dan variabel ‘scribbling’ bernilai ‘True’
            self.drawLineTo(event.pos())  //digunakan untuk memanggil metode dengan nama ‘drawLineTo’ dengan parameter posisi kurso saat klik dilepas
            self.scribbling = False  //digunakan untuk mengubah nilai variabel ‘scribbling’ menjadi ‘False’ sebagai pertanda drag telah selesai
            self.rectTerakhir = None  //digunakan untuk mengubah nilai variabel ‘rectTerakhir’ menjadi ‘None’ karena proses menggambar telah selesai.
            self.update()  //digunakan untuk mengupdate window atau kanvas agar hasil menggambar langsung bisa ditampilkan

    def paintEvent(self, event):  //digunakan untuk membuat metode denga nama ‘paintEvent’ yang akan dijalankan secara otomatis ketika kita melakukan proses menggambar.
        painter = QtGui.QPainter(self)  //digunakan untuk memanggil class ‘Qpainter’ dan di tampung ke dalam variabel ‘painter’.
        painter.drawImage(QtCore.QPoint(0, 0), self.image)  //digunakan untuk menggambar apa yang kita gambar pada ‘image’ agar bis di tampilkan pada window

    def resizeEvent(self, event):  //digunakan untuk membuat metode dengan nama ‘resizeEvent’ yang akan dijalankan secara otomatis ketika window aplikasi di ubah ukuran nya
        if self.width() > self.image.width() or self.height() > self.image.height():  //digunakan untuk mengecek apakah lebar window lebih besar dari lebar image yang menjadi lapisan kanvas. Atau tinggi window lebih besar atau lebih tinggi dari tinggi image yang menjadi lapisan kanvas
            newWidth = max(self.width() + 128, self.image.width())  //digunakan untuk membuat variabel baru dengan nama ‘newWidth’ dan menggunakan fungsi ‘max’ yang berfungsi unguk memilih nilai mana yang terbesar. antara lebar window di tambah 128 dengan lebar image.
            newHeight = max(self.height() + 128, self.image.height())  //digunakan untuk membuat variabel baru dengan nama ‘newHeight’ dan menggunakan fungsi ‘max’ yang berfungsi unguk memilih nilai mana yang terbesar. antara tinggi window di tambah 128 dengan tinggi image.
            self.resizeImage(self.image, QtCore.QSize(newWidth, newHeight))  //digunakan untuk memanggil metode dengan nama ‘resizeImage’ dengan memasukkan beberapa parameter ‘image’ dan ‘Qsize’ yang beri nilai yang ada di variabel ‘newWidth’ dan ‘newHeight’ sebagai parameter ‘Qsize’ nya
            self.update()  //digunakan untuk mengupdate aplikasi agar langsung bisa di tampilkan perubahannya.

        super(AreaKanvas, self).resizeEvent(event)  //digunakan ntuk memanggil metode yang ada di class parent dari class ‘AreaKanvas’.

    def drawLineTo(self, endPoint):  //digunakan untuk membuat metode dengan nama ‘drawLineTo’ yagn akan digunakan untuk menggambar garisnya
        painter = QtGui.QPainter(self.image)  //digunakan untuk memanggil class ‘Qpainter’ dengan memasukkan ‘image’  sebagai parameter. Dan disimpan ke dalam variabel ‘painter’
        painter.setPen(QtGui.QPen(self.myPenColor, self.myPenWidth, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin))  //digunakan untuk mengatur pena yang akan di gunakan. Yang menggunaka class “QPen” sebagai parameter. Dan clas “QPen” sendiri memiliki beberapa 5 parameter. Yaitu ‘myPenColor’ yang sebenarnya merpakan sebuah variabel dengan isi warna. Inisialisasinya ada di code paling atas. ‘myPenColor’ yang sebenarnya merupakan sebuah variabel dengan isi angka yang menentukan ketebalan pena nya. Inisialisasinya ada di code paling atas. ‘QsolidLine’ agar menampilkan garis solid. 

        painter.drawLine(self.pensil, endPoint)  //digunakan untuk membuat garis dengan posisi kursor sebelum pindah dan lokasi terakhir kursor. Yang ada pada variabel ‘self.pensil’ dan ‘endPoint’.

    def resizeImage(self, image, newSize):  //digunakan untuk membuat metode dengan nama ‘resizeImage’ yang akan di jalankan untuk mengubah ukuran image yang menjadi lapisan kanvas
        if image.size() == newSize:  //digunakan untuk mengecek apakah ukuran ‘image’ adalah sama dengan ukuran baru nya yang ada di variabel ‘newSize’
            return  //digunakan untuk mengembalikan. Dan tidak melanjutkan code program di bawah nya.

        newImage = QtGui.QImage(newSize, QtGui.QImage.Format_RGB32)  //digunakan untuk membuat variabel dengan nama ‘newImage’ yang di isi dengan class ‘QImage’ baru dengan ukuran baru dan format ‘RGB’
        newImage.fill(QtGui.qRgb(255, 255, 255))  //digunakan untuk memberikan warna kanvas menjadi putih.
        painter = QtGui.QPainter(newImage)  //memasukkan image baru yang ada di variabel ‘newImage’ sebagai lapisannya. Dan disimpan ke dalam variabel ‘painter’.
        painter.drawImage(QtCore.QPoint(0, 0), image)  //digunakan untuk  memasukkan image baru dengan ukuran yang baru pula tentunya
        self.image = newImage  //digunakan untuk mengganti nilai yang ada di variabel ‘image’ menjadi image yang baru di variabel ‘newImage’

    def penWidth(self):  //digunakan untukmembuat metode dengan nama ‘penWidth’ yang digunakan untuk mendapatkan nilai ukuran pena
        return self.myPenWidth  //digunakan untuk memberikan atau mengembalikan nilai yang ada di variabel ‘myPenWidth’ yang merupakan penampung ukuran pena

class MainWindow(QtGui.QMainWindow):  //digunakan untuk membuat class dengan nama ‘MainWindow’ dengan meng inheritens atau menurunkan class ‘QmainWindow’ yang ada pada QtGui. Dan class ini menjadi window utama yang menjadi tempat kanvas dan tombol - tombol nantinya
    def __init__(self):  //merupakan sebuah construktor dari class ‘MainWindow’
        super(MainWindow, self).__init__()  //digunakan untuk memanggill construktor class parent dari class ‘MainWindow’.

        widgetInti = QtGui.QWidget()  //digunakan untuk meng inisialisasi  variabel dengan nama ‘widgetInti’ yang di isi dengan variabel ‘QWidget’. Dan akan digunakan sebagai tempat kanvasnya di tengah window.

        self.kanvas = AreaKanvas(self)  //digunakan untuk memanggil atau menjalankan class dengan nama ‘AreaKanvas’ dan disimpan ke dalam variabel ‘kanvas’.
        self.mainLayout = QtGui.QVBoxLayout(widgetInti)  //digunakan untuk membuat sebuah layout dengan nama “QVBoxLayout’ dengan parameter ‘widgetInti’. Agar saat di masukkan sebagai layout inti di tengah window, tidak terjadi error. Kemudian di tampung ke dalam variabel ‘mainLayout’.
        self.kanvas.setMinimumHeight(500)  //digunakan untuk membuat ukuran tinggi minimum kanvas sebesar 500
        self.kanvas.setMinimumWidth(500)  //digunakan untuk membuat ukuran lebar minimum kanvas sebesar 500
        self.kanvas.setMaximumWidth(500)  //digunakan untuk membuat ukuran lebar maximum kanvas sebesar 500
        self.kanvas.setMinimumHeight(500)  //digunakan untuk membuat ukuran tinggi maksimum kanvas sebesar 500
        self.mainLayout.setContentsMargins(0,0,0,0)  //digunakan agar tidak ada margin pada layout utama nya. Tujuannya hanya untuk memperbagus saja.
        self.setCentralWidget(widgetInti)  //digunakan untuk memasukkan widget inti sebagai objek di tengah window. Dan tentu saja memasukkan ‘mainLayout’ ke dalamnya. Karena sudah di masukkan sebagai parameter saat meng inisiaisasinya tadi

        self.setScroll()  //digunakan untuk memanggil atau menjalankan metode dengan nama ‘setScroll’ 

        self.setWindowTitle("Painting -> Mn-belajarpython.blogspot.co.id"  //digunakan untuk mengubah nama window.
        self.resize(700, 650)  //digunakan untuk mengubah ukuran window menjadi 700x650 pixel

    def setScroll(self):  //digunakan untuk membuat metode dengan nama ‘setScroll’ yang akan digunakan untuk mengatur scroll
        # mengatur scroll  //komentar
        self.scrollArea = QtGui.QScrollArea()  //digunakan untuk mendefinisikan sebuah area yang akan di scroll. Dengan memanggil class ‘QScrollArea’. Dan disimpan ke dalam variabel ‘scrollArea’.
        self.scrollArea.setWidget(self.kanvas)  //digunakan untuk memasukkan canvas kedalam area scroll. Atau bisa juga dikatakan untuk menetapkan kanvas untuk di scroll
        self.scrollArea.setBackgroundRole(QtGui.QPalette.Mid)  //digunakan untuk mengubah warna backgorund nya saja
        self.scrollArea.setAlignment(QtCore.Qt.AlignCenter)  //digunakan untuk membuat canvas agar tampil di tengah window

        self.mainLayout.addWidget(self.scrollArea)  //digunakan untuk memasukkan ‘scrollArea’ yang merupakan variabel penampung tempat yang akan di scroll kedalam variabel ‘mainLayout’.


if __name__ == '__main__':  //merupakan code utama yang akan di jalankan. Bisa dikantakan sebagai main method

    import sys  //digunakan untuk mengimport sys.

    app = QtGui.QApplication(sys.argv)  //digunakan untk memanggil ‘Qapplication’ hal ini wajib adanya. Dan disimpan ke dalam variabel ‘app’.
    window = MainWindow()  //digunakan untuk menjalankan class dengan nama ‘MainWindow’. Dan disimpan ke dalam variabel ‘window’.
    window.show()  //digunakan untuk menampilkan window nya

    sys.exit(app.exec_())  //digunakan agar window tidak langsung close saat di jalankan.


Nah itu dia temen - temen penjelasan code programnya.. Semoga dengan penjelasan di atas dapat membuat kalian lebih mudah di pahami.. Tapi mohon maaf ya apabila ada penjelasan yang kurang jelas, atau bakan ada kekeliruan... Mohon kasi pembenaran atau pendapat kalian di kolom komentar ya temen - temen... Biar kita bisa belajar bersama - sama..

Dan sekali lagi saya ingatkan 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...



Oke, sekian dulu ya temen - temen postingan saya kali ini..  Semoga apa yang telah saya sampaikan di atas, dapat memberikan manfaat bagi kita semua.. Jika kalian punya kritik, saran dan pesan bisa kalian sampai kan di kolom komentar maupun laman contact us yang ada di halaman ini...

Oke terimakasih dan sampai di sini dulu ya temen - temen... Sampai jumpa di postingan saya yang lainnya.. Oya, jangan lupa untuk membaca versi - versi yang lainnya... Biar ilmunya juga nambah.. Hehe.. Temikasih sekali lagi dan sekian...

Wassalamualaikum wr. wb.

Previous
Next Post »
Thanks for your comment