Aplikasi pembuka foto dari Tkinter versi 4

BelajarPython - assalamualaikum wr. wb.

Jumpa lagi ya temen - temen.. Pada kesempatan kali ini, saya akan mengajak kalian untuk belajar membuat mini aplikasi dari tkinter.. Menggunakan library yang cukup sederhana ini, saya akan mencoba untuk mengajak berkereasi.. Walaupun fungsi nya tak akan sebagus aplikasi pada umumnya... Nah lalu aplikasi apa yang akan kita buat kali ini ? Langsung saja yuk kita simak sama - sama postingan kali ini...

Penjelasan umum Mini - Aplikasi yang akan di buat.

Pada postingan kali ini, saya akan mencoba untuk meng upgrade versi aplikasi pembuka foto yang telah saya posting sebelumnya... Yaitu versi ketiga.. Jika kalian belum atau ingin membacanya, kalian bisa KLIK DISINI.  Walaupun dengan tampilan seadanya dan kesederhanaan interface Tkinter. Saya tetap semangat untuk mengembangkan fitur mini aplikasi ini.. Semoga kalian demikian ya.. hehe

Pembuka foto versi kali ini merupakan versi yang ke empat.. Dimana pada versi kali ini, saya akan menambahkan tiga buah tombol dengan fungsi untuk menormalkan perbesaran gambar, membuat lebar gabar agar pas dengan ukuran kanvas, serta menutup gambar atau menghapus gambar dari kanvas. Serta di tambah sebuah kolom teks yang saya gunakan untuk menampilkan lokasi gambar.. Walaupun tak terlalu penting juga ya.. hehe

Oya, perlu kalian ketahui ya, Aplikasi ini memiliki banyak versi yang tentu saja memiliki penambahan fitur di tiap versinya.. Dengan begitu, saya harap kalian dapat dengan mudah mempelajari code programnya.. Untuk membaca daftar isi atau rincian lengkap fitur dan pengembangan tiap versinya, KALIAN BISA KLIK DISINI YA temen - temen...

Rincian lengkap aplikasi Pembuka Foto Tkinter versi 4.0.

Selanjutnya saya akan memperkenalkan lebih dalam lagi mengenai aplikasi pembuka foto tkinter ini..  Oya perlu kalian ketahui, pada aplikasi kali ini, saya menggunakan library tambahan PILLOW atau PIL. Untuk menginstall library tersebut, kalian BISA KLIK DISINI.

Oke, Langsung saja yuk kita simak sama - sama rincian lengkap dari aplikasi pembuka foto tkinter yang akan saya bagi kan kali ini..


Nama: mn-Photoview 4.0
Versi: 4.0 | klik disini untuk membaca versi selanjutnya.
Platform: Python 3.x
Modul: Tkinter dan PILLOW. Klik disini untuk menginstallnya.
Baris Code: kurang lebih 120 baris code program.
Terdiri dari: 1 class dan 12 metode.
Fitur: menormalkan ukuran gambar, membuat ukuran gambar pas dengan lebar kanvas atau tempat gambar, menutup atau menghapus gambar dari kavas, dan menampilkan lokasi gambar..
syarat menjalankan: install python 3.x dan PILLOW atau PIL, punya editor teks atau IDE.
Cara menjalankan: install python 3 dan PILLOW atau PIL, 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 pembuka foto tkinter versi 4.0

Nah setelah kita mengenal aplikasi yang akan saya bagikan kali ini, maka selanjutnya kita akan langsung memasuki segmen yang palin penting pada postingan kali ini.. Yaitu membagikan code program dari mini aplikasi nya.. Langsung saja yuk kita simak sama - sama code programnya di bawah ini...

from tkinter import *
from PIL import Image
from PIL import ImageTk
from tkinter import filedialog

class GUI:
    def __init__(self,root):
        self.frame = Frame(root,relief=SUNKEN)
        self.frameTombol=Frame(root, relief=SUNKEN)
        self.frameHapus=Frame(root, relief=SUNKEN)
        self.foto = StringVar()

        self.pertambahan = 0.03
        self.ukuran = DoubleVar()
        self.ukuran.set(1)
        self.isiKolom=StringVar()

        root.title('Phowo viewer - mn-belajarpython.blogspot.co.id')

        self.canvas = Canvas(self.frame, width=500, height=300, bg='white', xscrollcommand=self.xscrollbar.set,
                             yscrollcommand=self.yscrollbar.set)
        self.buatScrollBarr()
        self.canvas.grid(row=0, column=0)
        self.buatCanvas()
        self.buatTombol()

    def buatScrollBarr(self):
        self.xscrollbar = Scrollbar(self.frame, orient=HORIZONTAL)
        self.xscrollbar.grid(row=1, column=0, sticky=E+W)
        self.yscrollbar = Scrollbar(self.frame)
        self.yscrollbar.grid(row=0, column=1, sticky=N+S)

    def buatCanvas(self):
        try :
            pil_image = Image.open(self.foto.get())
            width_org, height_org = pil_image.size

            factor = self.ukuran.get()

            width = int(width_org * factor)
            height = int(height_org * factor)

            pil_image2 = pil_image.resize((width, height), Image.ANTIALIAS)
            self.img = ImageTk.PhotoImage(pil_image2)

            self.canvas.create_image(0,0,image=self.img)
        except:
            pass

        self.canvas.config(scrollregion=self.canvas.bbox(ALL))
        self.xscrollbar.config(command=self.canvas.xview)
        self.yscrollbar.config(command=self.canvas.yview)

        self.frame.pack()


    def gambarPasWindow(self, tinggi, lebar):

        try :
            pil_image = Image.open(self.foto.get())
            width_org, height_org = pil_image.size

            pil_image2 = pil_image.resize((lebar, tinggi), Image.ANTIALIAS)
            self.img = ImageTk.PhotoImage(pil_image2)

            self.canvas.create_image(0,0,image=self.img)
        except:
            print("foto atau folder yang anda masukkan tidak benar. mohon koreksi ulang")

        self.canvas.config(scrollregion=self.canvas.bbox(ALL))
        self.xscrollbar.config(command=self.canvas.xview)
        self.yscrollbar.config(command=self.canvas.yview)


    def buatTombol(self):
        Button(self.frameTombol,relief='flat', text="open", command=self.perintahBuka).grid(row=0, column=0)
        Button(self.frameTombol,relief='flat', text="zoom in", command=self.perintahPerbesar).grid(row=0, column=1)
        Button(self.frameTombol,relief='flat', text="zoom out", command=self.perintahPerkecil).grid(row=0, column=2)
        Button(self.frameTombol,relief='flat', text="normal", command=self.perintahNormal).grid(row=0, column=3)
        Button(self.frameTombol,relief='flat', text="fit", command=self.perintahFitToWindow).grid(row=0, column=4)
        Entry(self.frameHapus, width=50, textvariable=self.isiKolom).grid(row=0, column=0)
        Button(self.frameHapus,relief='flat', text="hapus", command=self.perintahHapus).grid(row=0, column=1)
        self.frameHapus.pack()
        self.frameTombol.pack()

    def perintahBuka(self):
        tipeFile = (('image files', '*.jpg'), ('png files', '*.png'), ('all files', '*'))
        self.pembuka = filedialog.askopenfilename(filetypes=tipeFile)
        if self.pembuka :
            self.isiKolom.set(self.pembuka)
            self.foto.set(self.pembuka)
            self.buatCanvas()


    def perintahPerbesar(self):
        self.ukuran.set(self.ukuran.get() + self.pertambahan)
        self.buatCanvas()

    def perintahNormal(self):
        self.ukuran.set(1)
        self.buatCanvas()

    def perintahPerkecil(self):
        try :
            self.ukuran.set(self.ukuran.get() - self.pertambahan)
            self.buatCanvas()
        except :
            self.ukuran.set(0.01)
            self.buatCanvas()

    def perintahHapus(self):
        self.canvas.delete('all')
        self.foto.set('')
        self.isiKolom.set('')

    def perintahFitToWindow(self):
        lebar = self.canvas.winfo_width()
        tinggi = self.canvas.winfo_height()
        self.gambarPasWindow(tinggi, lebar)


root = Tk()
GUI(root)
root.mainloop()



Nah itu dia temen - temen code programnya.. Lalu seperti apa tampilannya ketika code program di atas saya Run atau di jalankan ? Biar tidak penasaran , Langsung saja yuk kita simak sama - sama contoh screenshoot dari aplikasi pembuka foto tkinter kali ini... Cek pada gambar di bawah ini ya temen - temen..




Bisa kita lihat ya pada gambar di atas, sudah ada 3 tombol baru.. Yaitu ‘normal’ untuk menormalkan ukuran gambar, tombol ‘fit’ untuk membuat ukuran gambar agar pas dengan lebar dari kanvas atau tempat gambar nya.. Lalu ada tombol ‘hapus’ untuk menghapus atau membuang gambar yang di tampilkan pada kanvas atau tempat gambar.. Bisa kalian lihat sendiri ya pada dua contoh screenshoot diatas..


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

Penjelasan Code program untuk membuat Aplikasi Pembuka Foto Tkinter versi 4.0

Nah, setelah kita tau, code program dan tampilan aplikasi yang akan kita buat kali ini, maka  pada segmen ini saya akan menjelaskan baris demi baris dari code program diatas.. Hal ini saya lakukan dengan harapan dapat membantu proses pemahaman kalian nantinya.. Langsung saja yuk kita simak sama - sama penjelasannya 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]

from tkinter import *  //digunakan untu mengimport semua class yang ada di library tkinter
from PIL import Image  //digunakan untuk mengimport class “Image” dari Library “PIL”.
from PIL import ImageTk  //digunakan untuk mengimport class “ImageTk” dari librari PIL
from tkinter import filedialog  //digunakan untuk mengimport ‘filedialog’ dari library ‘tkinter’.

class GUI:  //digunakan untuk membuat class dengan nama ‘GUI’ yang akan digunakan untuk membuat pembuka foto nya.
    def __init__(self,root):  //digunakan untuk membuat sebuah konstruktor dari class ‘GUI’.
        self.frame = Frame(root,relief=SUNKEN)  //digunakan untuk membuat sebah frame utama yang akan digunakan untuk membuat frame utama. Dan disimpan ke dalam variabel ‘frame’.
        self.frameTombol=Frame(root, relief=SUNKEN)  //digunakan untuk membuat sebuah frame untuk tempat tombol. Dan disimpan ke dalam variabel ‘frameTombol’.
        self.frameHapus=Frame(root, relief=SUNKEN)  //digunakan untuk membuat sebuah frame untuk tempat tombol hapus dan penampil lokasi gambar. Dan disimpan ke dalam variabel ‘frameTombol’.
        self.foto = StringVar()  //digunakan untuk membuat variabel dengan nama ‘foto’ yang menampung class ‘StringVar’ dan akan digunakan untuk menampung path atau lokasi foto.

       self.pertambahan = 0.03  //mendefinisikan variabel dengan nama ‘pertambahan’ dengan nilai ‘0.03’ yang akan digunakan sebagai angka perbesaran dan perkecilan foto nantinya.
        self.ukuran = DoubleVar()  //digunakan untuk membuat variabel dengan nama ‘ukuran’ yang menampung class ‘DoubleVar’ dan akan digunakan untuk menampung nilai perbesaran foto.
        self.ukuran.set(1)  //digunakan untuk mengisi variabel ‘ukuran’ dengan nilai 1.
        self.isiKolom=StringVar()  //digunakan untuk membuat variabel dengan nama ‘isiKolom’ yang menampung class ‘StringVar’ dan akan digunakan untuk menampung lokasi gambar.

        root.title('Phowo viewer - mn-belajarpython.blogspot.co.id')  //digunakan untuk mengubah judul window.

            self.canvas = Canvas(self.frame, width=750, height=450, bg='white', xscrollcommand=self.xscrollbar.set,
                                 yscrollcommand=self.yscrollbar.set)  //digunakan untuk membuat sebuah kanvas. Dan disimpan ke dalam variabel ‘canvas’. Dengan parameter “frame” sebagai tempat penempatan di window. Lebar sebesar 750 dan tinggi 450. Dengan background(bg=white) adalah putih. Dan menghubungkan slide kanan dan kiri dengan scrollbar yang ada pada variabel ‘xscrollbar’. Dan perintah slide atas bawah dihubungkan dengan scrollbar yang ada di dalam variabel ‘yscrollbar’.
            self.canvas.grid(row=0, column=0)  //digunakan untuk memasukkan ‘canvas’ ke dalam window.

        self.buatScrollBarr()  //digunakan untuk memanggil atau menjalankan sebuah metode dengan nama ‘buatScrollBar’.
        self.buatCanvas()  //digunakan untuk memanggil atau menjalankan sebuah metode dengan nama ‘buatCanvas’.
        self.buatTombol()  //digunakan untuk memanggil atau menjalankan sebuah metode dengan nama ‘buatTombol’.

    def buatScrollBarr(self):  //digunakan untuk membuat metode dengan nama ‘buatScrollBar’ yang tentu saja untuk membuat scrollbar.
        self.xscrollbar = Scrollbar(self.frame, orient=HORIZONTAL)  //digunakan untuk membuat sebuah scrollbar  horizontal. Yang disimpan ke dalam variabel ‘xscrollbar’.
        self.xscrollbar.grid(row=1, column=0, sticky=E+W)  //digunakan untuk memasukkan scrollbar yang ada di dalam variabel ‘xscrollbar’ kedalam window.
        self.yscrollbar = Scrollbar(self.frame)  //digunakan untuk membuat sebuah scrollbar  vertical. Yang disimpan ke dalam variabel ‘yscrollbar’.
        self.yscrollbar.grid(row=0, column=1, sticky=N+S)  //digunakan untuk memasukkan scrollbar yang ada di dalam variabel ‘yscrollbar’ kedalam window.

    def buatCanvas(self):  //digunakan untuk membua metode dengan nama ‘buatCanvas’. Yang akan digunakan untuk membuat canvas dan menampilkan gambar.
        try :  //digunakan untuk mencoba menjalankan beberapa code program.
            pil_image = Image.open(self.foto.get())  //digunakan untuk membuka sebuah gambar yang lokasinya ada di dalam variabel ‘foto’. Dan disimpan ke dalam variabel ‘pil_image’.
            width_org, height_org = pil_image.size  //digunakan untuk mendapatkan ukuran gambar yang akan dibuka. Dengan nilai tinggi nya akan di tampung ke dalam variabel ‘height_org’ dan lebarnya akan di tampung ke dalam variabel ‘width_org’.

            factor = self.ukuran.get()  //digunakan untuk mendapatkan nilai yang ada di variabel ‘ukuran’. Dan disimpan ke dalam variabel ‘factor’.

            width = int(width_org * factor)  //digunakan untuk mengalikan ukuran lebar asli foto yang ada di variabel ‘width_org’ dengan nilai pembesaran atau perkecilan yang ada pada variabel ‘factor’ dan di konversi menjadi ‘int’. Dan disimpan ke dalam variabel ‘width’.
            height = int(height_org * factor)  //digunakan untuk mengalikan ukuran tinggi asli foto yang ada di variabel ‘height_org’ dengan nilai pembesaran atau perkecilan yang ada pada variabel ‘factor’ dan di konversi menjadi ‘int’. Dan disimpan ke dalam variabel ‘height’.

            pil_image2 = pil_image.resize((width, height), Image.ANTIALIAS)  //digunakanuntuk mengubah ukuran foto dengan nilai yang ada di variabel ‘width’ dan ‘height’ yang telah di definisikan sebelumnya. Dan disimpan ke dalam variabel ‘pil_image2’.
            self.img = ImageTk.PhotoImage(pil_image2)  //digunakan untuk memanggil metode dengan nama ‘PhotoImage’ yang ada di class ‘ImageTk’ dengan memasukkan variabel ‘pil_image’ sebagai parameter. Dan disimpan ke dalam variabel ‘img’.

            self.canvas.create_image(0,0,image=self.img)  //digunakan untuk memasukkan gambar yang telah dibuka ke dalam canvas.
        except:  //digunakan untuk menjalankan beberapa code program ketika pada block code ‘try’ terdapat eror.
            print("foto atau folder yang anda masukkan tidak benar. mohon koreksi ulang")  //digunakan untuk mencetak teks atau pesan error.

        self.canvas.config(scrollregion=self.canvas.bbox(ALL))  //digunakan untuk meng aktifkan scrollbar pada canvas.
        self.xscrollbar.config(command=self.canvas.xview)  //digunakan untuk menghubungkan slide kanan kiri dengan scrollbar yang ada di variabel ‘xscrollbar’
        self.yscrollbar.config(command=self.canvas.yview)  //digunakan untuk menghubungkan slide atas bawah dengan scrollbar yang ada di variabel ‘yscrollbar’

        self.frame.pack()  //digunakan untuk memasukkan frame utama kedalam window..

    def gambarPasWindow(self, tinggi, lebar):  //digunakan untuk membuat metode dengan nama ‘gambarPasWindow’ yang akan digunakan untuk membuat gambar agar pas dengan lebar kanvas. Dengan membuatuhkan dua parameter tambahan. Yaitu ‘tinggi’ dan ‘lebar’ untuk mengetahui ukuran kanvas.

        try :  //digunakan untuk mencoba beberapa code program
            pil_image = Image.open(self.foto.get())  //digunakan untuk membuka foto ulang. Dengan mengambil lokasi fotonya di vaiabel ‘foto’. Lalu disimpan ke dalam variabel ‘pil_image’.
            width_org, height_org = pil_image.size  //digunakan untuk mendapatkan ukuran gambar. Nilai lebar nya di tampung ke dalam variabel ‘width_org’ dan tinggi nya di masukkan ke dalam variabel ‘height_org’.

            pil_image2 = pil_image.resize((lebar, tinggi), Image.ANTIALIAS)  //digunakan untuk mengubah ukuran gambar sesuai dengan parameter yang sudah dimasukkan melalui parameter variabel ‘lebar’ dan ‘tinggi’.
            self.img = ImageTk.PhotoImage(pil_image2)  //digunakan mengkonversi gambar agar bisa dimasukkan ke dalam kanvas. Lalu hasilnya ditampung ke dalam variabel ‘img’

            self.canvas.create_image(0,0,image=self.img)  //digunakan untuk memasukkan gambar yang sudah kita proses tadi ke dalam kanvas.
        except:  //digunakan untuk menjalankan code program ketika code program yang ada di block ‘try’ terdapat error.
            pass  //digunakan untuk tidak melakukan apa apa.

        self.canvas.config(scrollregion=self.canvas.bbox(ALL))  //digunakan untuk meng aktifkan scrollbar pada canvas.
        self.xscrollbar.config(command=self.canvas.xview)  //digunakan untuk menghubungkan slide kanan kiri dengan scrollbar yang ada di variabel ‘xscrollbar’
        self.yscrollbar.config(command=self.canvas.yview)  //digunakan untuk menghubungkan slide atas bawah dengan scrollbar yang ada di variabel ‘yscrollbar’


    def buatTombol(self):  //digunakan untuk membuat metode dengan nama ‘buatTombol’ yang akan digunakan untuk membuat tombol.
        Button(self.frameTombol,relief='flat', text="open", command=self.perintahBuka).grid(row=0, column=0)  //digunakan untuk membuat tombol dengan parameter ‘self.frameTombol’ yang artinya tombol tersebut akan di tempatkan di frame yang ada di variabel ‘frameTombol’. “relief=flat” digunakan agar tombol tidak memiliki garis. Sehingga hanya akan tampil teks saja. “text=open” merupakan teks tombolnya. “Command=self.perintahBuka” merupakan perintah yang akan menjalankan metode dengan nama ‘perintahBuka’ ketika tombol diklik.
        Button(self.frameTombol,relief='flat', text="zoom in", command=self.perintahPerbesar).grid(row=0, column=1)  //digunakan untuk membuat tombol dengan parameter ‘self.frameTombol’ yang artinya tombol tersebut akan di tempatkan di frame yang ada di variabel ‘frameTombol’. “relief=flat” digunakan agar tombol tidak memiliki garis. Sehingga hanya akan tampil teks saja. “text=zoom in” merupakan teks tombolnya. “Command=self.perintahPerbesar” merupakan perintah yang akan menjalankan metode dengan nama ‘perintahPerbesar’ ketika tombol diklik. Lalu di masukkan kedalam frame yang ada di variabel ‘frameTombol’ yang menggunakan grid layout. Dengan posisi baris 0 dan kolom 1.
        Button(self.frameTombol,relief='flat', text="zoom out", command=self.perintahPerkecil).grid(row=0, column=2)  //digunakan untuk membuat tombol dengan parameter ‘self.frameTombol’ yang artinya tombol tersebut akan di tempatkan di frame yang ada di variabel ‘frameTombol’. “relief=flat” digunakan agar tombol tidak memiliki garis. Sehingga hanya akan tampil teks saja. “text=zoom out” merupakan teks tombolnya. “Command=self.perintahPerkecil” merupakan perintah yang akan menjalankan metode dengan nama ‘perintahPerkecil’ ketika tombol diklik. Lalu di masukkan kedalam frame yang ada di variabel ‘frameTombol’ yang menggunakan grid layout. Dengan posisi baris 0 dan kolom 2.
        Button(self.frameTombol,relief='flat', text="normal", command=self.perintahNormal).grid(row=0, column=3)  //digunakan untuk membuat tombol dengan parameter ‘self.frameTombol’ yang artinya tombol tersebut akan di tempatkan di frame yang ada di variabel ‘frameTombol’. “relief=flat” digunakan agar tombol tidak memiliki garis. Sehingga hanya akan tampil teks saja. “text=normal” merupakan teks tombolnya. “Command=self.perintahNormal” merupakan perintah yang akan menjalankan metode dengan nama ‘perintahNormal’ ketika tombol diklik. Lalu di masukkan kedalam frame yang ada di variabel ‘frameTombol’ yang menggunakan grid layout. Dengan posisi baris 0 dan kolom 3.
        Button(self.frameTombol,relief='flat', text="fit", command=self.perintahFitToWindow).grid(row=0, column=4)  //digunakan untuk membuat tombol dengan parameter ‘self.frameTombol’ yang artinya tombol tersebut akan di tempatkan di frame yang ada di variabel ‘frameTombol’. “relief=flat” digunakan agar tombol tidak memiliki garis. Sehingga hanya akan tampil teks saja. “text=fit” merupakan teks tombolnya. “Command=self.perintahFitToWindow” merupakan perintah yang akan menjalankan metode dengan nama ‘perintahFitToWindow’ ketika tombol diklik. Lalu di masukkan kedalam frame yang ada di variabel ‘frameTombol’ yang menggunakan grid layout. Dengan posisi baris 0 dan kolom 4.
        Entry(self.frameHapus, width=50, textvariable=self.isiKolom).grid(row=0, column=0)  //digunakan untuk membuat kolom teks yang akan di tempatkan di frame yang ada di variabel ‘frameHapus’. Dengan lebar / panjang ‘50’. Dan isi teks yang ada di variabel ‘isiKolom. Dan dimasukkan ke dalam frame posisi baris 0 dan kolom 0.
        Button(self.frameHapus,relief='flat', text="hapus", command=self.perintahHapus).grid(row=0, column=1)  //digunakan untuk membuat tombol dengan parameter ‘self.frameHapus’ yang artinya tombol tersebut akan di tempatkan di frame yang ada di variabel ‘frameHapus’. “relief=flat” digunakan agar tombol tidak memiliki garis. Sehingga hanya akan tampil teks saja. “text=hapus” merupakan teks tombolnya. “Command=self.perintahHapus” merupakan perintah yang akan menjalankan metode dengan nama ‘perintahHapus’ ketika tombol diklik. Lalu di masukkan kedalam frame yang ada di variabel ‘frameTombol’ yang menggunakan grid layout. Dengan posisi baris 0 dan kolom 1.
        self.frameHapus.pack()  //digunakan untuk memasukkan frame yang di variabel ‘frameHapus’ ke dalam  window
        self.frameTombol.pack() //digunakan untuk memasukkan frame yang ada pada variabel ‘frameTombol’ ke dalam window.

    def perintahBuka(self):  //digunakan untuk membuat metode dengan nama ‘perintahBuka’ yang akan dijalankan ketika tombol ‘open’ di klik. Dan juga digunakan untuk mencari file foto yang akan di tampilkan.
        tipeFile = (('image files', '*.jpg'), ('png files', '*.png'), ('all files', '*'))  //digunakan untuk mendefinisikan tipe - tipe file apa saja yang akan di tampilkan saat mencari file. Dan disimpan kedalam variabel ‘tipeFile’.
        self.pembuka = filedialog.askopenfilename(filetypes=tipeFile)  //digunakan untuk menampilkan file dialog yang akan digunakan untuk mencari file foto. Dan ketika user memilih, maka path atau alamatnya akan disimpan ke dalam variabel ‘pembuka’. Dan memasukkan tipe file yang ada di variabel ‘tipeFile’.
        if self.pembuka :  //digunakan untuk mengecek apakah variabel ‘pembuka’ tidak kosong. Yang artinya mengecek apakah user memilih file.
            self.foto.set(self.pembuka)  //digunakan untuk mengubah nilai variabel ‘foto’ menjadi alamat / path foto atau gambar yang sudah di pilih oleh user yang disimpan kedalamvariabel ‘pembuka’.
            self.buatCanvas()  //digunakan untuk menjalankan metode dengan nama ‘buatCanvas’.

    def perintahPerbesar(self):  //digunakan untuk membuat metode dengan nama ‘perintahPerbesar’ yang tentu saja dijalankan untuk memperbesar foto atau gambar yang ditampilkan.
        self.ukuran.set(self.ukuran.get() + self.pertambahan)  //digunakan untuk menambah nilai yang ada di variabel ‘ukuran’ dengan nilai yang ada di variabel ‘pertambahan’ dan dimasukkan kembali kedalam variabel ‘ukuran’.
        self.buatCanvas()  //digunakan untuk menjalankan metode dengan nama ‘buatCanvas’.

    def perintahNormal(self):  //digunakan untuk membuat metode dengan nama ‘perintahNormal’ yang akan digunakan untuk menormalkan ukuran gambar.
        self.ukuran.set(1)  //digunakan untuk mengubah nilai variabel dengan nama ‘ukuran’ menjadi 1.
        self.buatCanvas()  //digunakan untuk menjalankan metode dengan nama ‘buatCanvas’

    def perintahPerkecil(self):  //digunakan untuk membuat metode dengan nama ‘perintahPerkecil’ yang akan dijalankan ketika akan memperkecil foto.
        try :  //digunakan untuk mencoba beberapa code program.
            self.ukuran.set(self.ukuran.get() - self.pertambahan)  //digunakan untuk mengutangi nilai yang ada di variabel ‘ukuran’ dengan nilai yang ada di variabel ‘pertambahan’ dan dimasukkan kembali kedalam variabel ‘ukuran’.
            self.buatCanvas() //digunakan untuk menjalankan metode dengan nama ‘buatCanvas’.
        except :  //digunakan untuk menjalankan beberapa code program ketika program di block ‘try’ ada eror.
            self.ukuran.set(0.01)  //digunakan untuk mengubah nilai variabel ukuran menjadi ‘0.01’.
            self.buatCanvas()    //digunakan untuk menjalankan metode dengan nama ‘buatCanvas’.

    def perintahHapus(self):  //digunakan untuk membuat metode dengan nama ‘perintahHapus’ yang akan didungakn untuk menghapus gambar di kanvas.
        self.canvas.delete('all')  //digunakanuntuk menghapus semua objek yang ada di kanvas. Termasuk gambar yang sedang di tampilkan disana.
        self.foto.set('')  //digunakan untuk mengubah nilai variabel ‘foto’ menjadi kosong. Yang artinya menghapus alamat gambar yang telah dibuka sebelumnya.
        self.isiKolom.set('')  //digunakan untuk mengosongkan isi kolom yang menampilkan lokasi gambar pada window.

    def perintahFitToWindow(self):  //digunakan untuk membuat metode dengan nama ‘perintaFitToWindow’ yang akan didungakn untuk mengepaskan gambar dengan ukuran kanvas.
        lebar = self.canvas.winfo_width()  //digunakan untuk mendapatkan lebar kanvas. Kemudian di tampung ke dalam variabel ‘lebar’
        tinggi = self.canvas.winfo_height()  //digunakan untuk mendapatkan tinggi kanvas. Kemudian di tampung ke dalam variabel ‘tinggi’
        self.gambarPasWindow(tinggi, lebar)   //digunakan untuk memanggil metode dengan nama ‘gambarPasWindow’ dengan memasukkan nilai variabel ‘tinggi’ dan ‘lebar’ sebagai parameter.

root = Tk()  //dkgunakan untuk memanggil window tkinter. Dan disimpan kedalam variabel ‘root’.
a = GUI(root)  //digunakan untuk memanggil class dengan nama ‘GUI’. Dengan memasukkan ‘root’ sebagai parameter. Dan disimpan ke dalam variabel ‘a’.
a.buatCanvas()  //digunakan untuk memanggil metode dengan nama ‘buatCanvas’. Yang ada di dalam class ‘GUI’.

root.mainloop()  //digunakan untuk membuat window tidak langsung close otomatis saat di jalankan.


Nah itu dia temen - temen penjelasan saya mengenai code program diatas... Saya harap dapat membantu kalian untuk memahami code program yang sudah saya bagikan di atas ya... Namun bila ada yang kurang jelas dari penjelasan di atas, kalian bisa menanyakannya langsung lewat komentar atau laman hubungi kami ya....

Terakhir kalinya 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 postingan saya kali ini... Terimakasih sudah membaca postingan ini dan Sampai jumpa di postingan saya yang lainnya.. mohon maaf atas kesalahan penulisan disana sini serta kesalahan penulisan yang ada... Mohon dimaklumi saja yaa... Karena saya juga manusia.. Oke terimakasih..

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