membuat aplikasi menggambar versi 1

BelajarPython - Assalamualaikum wr. wb.

Selamat datang di blog ku temen-temen.. Pada kesempatan kali ini saya akan mengajak kalian untuk membuat mini produk menggunakan python.. Dan pada kesempatan kali ini saya akan membuat mini aplikasi untuk menggambar... Wah apalikasi menggambar seprti apa ya.. Yuk langsung saja kita simak sama - sama postingan saya kali ini.. Let’s check it out temen - temen....

Pengenalan aplikasi yang akan kita buat.

Oke saya jelaskan lagi lebih rinci lagi ya aplikasi yang akan kita buat kali ini.. Jadi, aplikasi yang akan kita buat kali ini adalah aplikasi menggambar.. Ya mungkin kalian akan sedikit aneh mendengarnya.. Jika kalian pernah menggunakn aplikasi ‘paint’ bawaan windows, maka kalian akan mendapatkan gambaran mengenai aplikasi yang akan kita buat kali ini..

Jadi, dengan aplikasi ini kita bisa menggores - goreskan kursor layaknya sebuah pensil.. Cukup menarik ya temen-temen... Walaupun tak akan sebagus si ‘paint’ dari windows itu ya.. Maklum saja.. Kita kan sama - sama belajar.. hehe

Oya perlu kalian ketahui sebelum nya.. Aplikasi ini merupakan aplikasi versi pertama.. Dan ada beberapa versi penerusnya... untuk melihat perkembangan tiap versinya, kalian BISA KLIK DISINI.


Spesifikasi dan fitur aplikasi menggambar tkinter python.

Oya perlu kalian ketahui lagi.. Modul untuk membuat tampilan jam ini, saya menggunakan full tkinter ya... Unuk sekedar belajar atau membaca mengenai tkinter ini, kalian BISA KLIK DISINI. Nah untuk lebih jelas, simak penjabaran spesifikasi berikut ini ya temen - temen....

Nama: mn-pint 1.0
Versi: 1.0
Platform: Python 3.x
Modul: Tkinter
Baris Code: kurang lebih 72 baris code program.
Fitur: menggores dengan kursor.
syarat menjalankan: install python 3.x, punya editor teks atau IDE.
Cara menjalankan: install python 3, 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 menggambar tkinter python.


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

from tkinter import *
from PIL import Image, ImageDraw

class ImageGenerator():
    def __init__(self,parent, *kwargs):
        self.framekanvas = Frame(parent)
        self.frameTombol = Frame(parent)
        
        self.parent = parent
        self.sizex = 420
        self.sizey = 400
        self.b1 = "tidakDiKlik"
        self.xold = None
        self.yold = None

        self.koordinat= []
        self.buatTempatMenggambar()
        self.menggambarDgPensil()
        self.tombol()

    def buatTempatMenggambar(self):
        self.tempatMenggambar=Canvas(self.framekanvas,width=self.sizex,height=self.sizey, bg='white')
        self.tempatMenggambar.grid(row = 0, column=0)

        self.framekanvas.pack()

    def tombol(self):
        Button(self.frameTombol, text='Hapus', command=self.hapus).pack(side=LEFT)
        Button(self.frameTombol, text='Simpan', command=self.simpan).pack()

        self.frameTombol.pack()

    def menggambarDgPensil(self):
        self.tempatMenggambar.bind("<Motion>", self.pembuatGaris)
        self.tempatMenggambar.bind("<ButtonPress-1>", self.jikaDilepas)
        self.tempatMenggambar.bind("<ButtonRelease-1>", self.jikaDiKlik)

        self.image=Image.new("RGB",(400,400),(255,255,255))
        self.draw=ImageDraw.Draw(self.image)

    def simpan(self):
        self.draw.line(self.koordinat,(0,128,0),width=3)
        filename = "temp.jpg"
        self.image.save(filename)

    def hapus(self):
        self.tempatMenggambar.delete("all")
        self.koordinat=[]

    def jikaDilepas(self,event):
        self.b1 = "diKlik"

    def jikaDiKlik(self,event):
        self.b1 = "tidakDiKlik"
        self.xold = None
        self.yold = None

    def pembuatGaris(self,event):
        if self.b1 == "diKlik":
            if self.xold is not None and self.yold is not None:
                garis = event.widget.create_line(self.xold,self.yold,event.x,event.y,smooth='true')
                self.koordinat.append((self.xold,self.yold))
        self.xold = event.x
        self.yold = event.y


if __name__ == "__main__":
    root=Tk()
    root.title('aplikasi menggambar -> mn-belajarpython.blogspot.co.id')
    root.wm_geometry("%dx%d" % (430, 430))
    ImageGenerator(root)
    root.mainloop()


Nah itu dia temen - temen code program nya.. Cukup pendek juga ya... 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.. Gimana ? Cukup bagus ya.. Hehe...

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

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 code program untuk membuat aplikasi menggambar ini... Yuk tanpa lama - lama lagi langsung saja kita simak sama - sama penjelasan saya di bawah ini...


from tkinter import *  //digunakan untuk mengimport modul tkinter
from PIL import Image, ImageDraw  //digunakan untuk mengimport class image, dan image draw dari modul PIL

class ImageGenerator():  //membuat class dengan ‘imageGenerator’
    def __init__(self,parent, *kwargs):  //untuk membuat konstruktor dari class ‘ImageGenerator’.
        self.framekanvas = Frame(parent)  //digunakan untuk membuat sub frame. Dengan nama’framekanvas’.  Yang akan digunakan sebagai tempat kanvas nya.
        self.frameTombol = Frame(parent)  //digunakan untuk membuat subframe dengan nama ‘frameTombol’. Yang akan digunakan untuk menempatkan tombol.
        
        self.parent = parent  //digunakan untuk menampung isi dari parameter ‘parent’.
        self.sizex = 420  //mendefinisikan ukuran lebar dari kanvas atau tempat menggambarnya.
        self.sizey = 400  //mendefinisikan ukuran tinggi dari kanvas atau tempat menggambarnya. 
        self.b1 = "tidakDiKlik"  //digunakan sebagai penanda jika mous di tekan atau belum
        self.xold = None  //digunakan untuk menentukan posisi x garis
        self.yold = None  //digunakan untuk mennetukan posisi y garis

        self.koordinat= []  //digunakan sebagai penampung koordinat.
        self.buatTempatMenggambar()  //memanggil atau menjalankan sebuah metode dengan nama ‘buatTempatMenggambar’
        self.menggambarDgPensil()  //memanggil atau menjalankan sebuah metode dengan nama ‘menggambarDgPensil’
        self.tombol()  //memanggil atau menjalankan sebuah metode dengan nama ‘buatTombol’

    def buatTempatMenggambar(self):  //untuk membuat metode dengan nama ‘buatTempatMenggambar’ yang berisi code untuk pembuatan kanvas tempat menggambar.
        self.tempatMenggambar=Canvas(self.framekanvas,width=self.sizex,height=self.sizey, bg='white')  //digunakan untuk membuat kanvas dengan settingan yang sudah saya atur. Yaitu : lebar dan tingg menggunakan variabel sizex dan sizey. Dan backgruoud putih.
        self.tempatMenggambar.grid(row = 0, column=0)  //memasukkan kanvas ke subframe. Yaitu ‘frameKanvas’.

        self.framekanvas.pack()  //memasukkan subframe (framekanvas) ke frame atau window utama.

    def tombol(self):  //membuat metode dengan nama ‘tombol’ yang berfungsi untuk membuat semua tombol.
        Button(self.frameTombol, text='Hapus', command=self.hapus).pack(side=LEFT)  //digunaka untuk membuat tombol hapus dan langsung memasukkannya ke dalam subframe. Yaitu ‘frameTombol’ pada sisi kiri.
        Button(self.frameTombol, text='Simpan', command=self.simpan).pack()  //digunaka untuk membuat tombol simpan dan langsung memasukkannya ke dalam subframe. Yaitu ‘frameTombol’.

        self.frameTombol.pack()  //memasukkan subframe (frameTombol) ke dalam frame utama atau window utama.

    def menggambarDgPensil(self):  //digunakan untuk membuat metode dengan nama ‘menggambarDenganPensil’. Yaitu sebuah metode yang akan digunakan ketika menggambar.
        self.tempatMenggambar.bind("<Motion>", self.pembuatGaris)  //code yang akan menjalankan metode ‘pembuatGaris’ ketika mouse di drag
        self.tempatMenggambar.bind("<ButtonPress-1>", self.jikaDilepas)  //code yang akan menjalankan metode ‘jikaDiklik’ ketika mous di klik.
        self.tempatMenggambar.bind("<ButtonRelease-1>", self.jikaDiKlik)  //code yang akan menjalankan metode ‘jikaDilepas’ ketika mouse di lepas dari drag

        self.image=Image.new("RGB",(400,400),(255,255,255))  //digunakan untuk  membuat gambar dengan settingan yang telah di tetapkan. Yang akan digunakan ketika proses penyimpanan.
        self.draw=ImageDraw.Draw(self.image)  //memperbarui gambar lama.

    def simpan(self):  //untuk membuat metode dengan nama ‘simpan’ yang akan digunakan untuk menyimpan hasil menggambar.
        self.draw.line(self.koordinat,(0,128,0),width=3)  //digunakan untuk menggambar garis kembali sesuai garis yang telah di gambar.
        filename = "temp.jpg"  //digunakan sebagai nama file.
        self.image.save(filename)  //digunakan untuk menyimpan hasil akhir nya.

    def hapus(self):  //metode dengan nama ‘hapus’ yang akan digunakan untuk membersihkan kanvas.
        self.tempatMenggambar.delete("all")  //code untuk membersihkan kanvas.
        self.koordinat=[]  //digunakan untuk mengosongkan penampung koordinat

    def jikaDilepas(self,event):  //metode yang akan dijalankan ketika mouse di klik atau di tekan
        self.b1 = "diKlik"  //mengubah nilai variabel menjadi string ‘diklik’.

    def jikaDiKlik(self,event):  //metode dengan nama ‘jikaDiklik’ dan akan di jalankan ketika mouse dilepas dari proses drag.
        self.b1 = "tidakDiKlik"  //mengubah nilai variabel menjadi ‘tidakDiKlik’.
        self.xold = None  //mengosongkan koordinat x
        self.yold = None  //mengosongkan koordinat y

    def pembuatGaris(self,event):  //metode dengan nama ‘pembuatGaris’ yang digunakan untuk membuat garisnya. Dan akan di jalan kan ketika mouse di drag.
        if self.b1 == "diKlik":  //mengecek apakah variabel ‘b1’ bernilai ‘diKlik’. Yang artinya apakah mouse sudah di klik
            if self.xold is not None and self.yold is not None:  //mengecek apakah xold dan yold tidak kosong.
                garis = event.widget.create_line(self.xold,self.yold,event.x,event.y,smooth='true')  //digunakan untuk membuat atau menggambar garisnya
                self.koordinat.append((self.xold,self.yold))  //digunakan untuk menampung titik koordinatnya..
        self.xold = event.x  //digunakan untuk menampung koordinat x.
        self.yold = event.y  //digunakan untuk menampung koordinat y.


if __name__ == "__main__":  //merrupakan metode utama. Yang artinya akan dijalankan atau di eksekusi pertama kali ketika file di run.
    root=Tk()  //membuat window. Atau menampilkan window.
    root.title('aplikasi menggambar -> mn-belajarpython.blogspot.co.id')  //digunakan untuk menampilkan judul window.
    root.wm_geometry("%dx%d" % (430, 430))  //digunakan untuk mengatur lebar window
    ImageGenerator(root)  //memanggil class aplikasi menggambarnya

    root.mainloop()  //diperlukan agar tidak langsung close saat window tampil.


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 menggambar pada postingan kali ini ya...

Dan itu dia temen - temen cara untuk membuat aplikasi menggambar nya.. 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 keritikan kalian ya... Terimakasih.. Sampai jumpa di tutorial yang lainnya ya...

Wassalamualaikum wr.wb.

Previous
Next Post »
Thanks for your comment