Aplikasi pembuka foto dari Tkinter versi 2

BelajarPython - assalamualaikum wr. wb.

Jumpa lagi nih temen - temen.. Pada kesempatan kali ini, saya akan mengajak kalian untuk belajar membuat mini aplikasi dari tkinter lagi.. Menggunakan library dengan tampilan yang cukup sederhana ini, saya akan mencoba untuk mengajak kalian berkereasi.. Walaupun fungsi nya tak akan sebagus aplikasi pada umumnya... Nah lalu aplikasi apa yang akan kita buat kali ini ? Udah penasaran belum? 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 aplikasi pembuka foto yang telah saya posting sebelumnya... Yaitu versi pertama.. Jika kalian belum atau ingin membacanya, kalian bisa KLIK DISINI.  Walaupun dengan tampilan seadanya dicampur dengan kesederhanaan interface Tkinter, Saya tetap semangat mengembangkannya.. Semoga kalian sejalan dengan saya ya.. hehe

Oya, pada postingan kali ini, saya akan memposting versi kedua dari aplikasi pembuka foto ini... Yang akan saya update pada versi kali ini adalah membuka foto langsung melalui tampilan.. Dimana pada versi sebelumnya kita harus membuka foto melalui path yang dimasukkan langsung melalui code program nya secara manual..

Dan perlu kalian ketahui, Aplikasi ini memiliki banyak versi yang tentu saja akan saya tambah fiturnya di tiap versi baru yang saya keluarkan.. Dengan begitu, saya harap kalian dapat dengan mudah mempelajari code programnya.. Untuk membaca daftar isi dan rincian lengkap mengenai fitur dan pengembangan tiap versinya, KALIAN BISA KLIK DISINI YA temen - temen...

Rincian lengkap aplikasi Pembuka Foto Tkinter versi 2.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 2.0
Versi: 2.0 | klik disini untuk membaca versi selanjutnya.
Platform: Python 3.x
Modul: Tkinter dan PILLOW. Klik disini untuk menginstallnya.
Baris Code: kurang lebih 65 baris code program.
Terdiri dari: 1 class dan 5 metode.
Fitur: menambahakan tombol pemilih foto untuk dibuka.
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 2.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.foto = StringVar()

        self.ukuran = DoubleVar()
        self.ukuran.set(1)

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

        self.buatScrollBarr()
        self.canvas = Canvas(self.frame, width=500, height=300, bg='white', xscrollcommand=self.xscrollbar.set,
                             yscrollcommand=self.yscrollbar.set)
        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:
            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)

        self.frame.pack()

    def buatTombol(self):
        Button(self.frameTombol,relief='flat', text="open", command=self.perintahBuka).grid(row=0, column=0)
        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.foto.set(self.pembuka)
            self.buatCanvas()

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 terdapat tombol ‘open’ disana.. Dimana bila kita klik, maka akan muncul window file dialog seperti yang sudah saya lingkari biru diatas... Yang digunakan untuk memilih file foto yang akan dibuka nantinya..


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 2.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.foto = StringVar()  //digunakan untuk membuat variabel dengan nama ‘foto’ yang menampung class ‘StringVar’ dan akan digunakan untuk menampung path atau lokasi foto.

        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.

        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 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. Lalu di masukkan kedalam frame yang ada di variabel ‘frameTombol’ yang menggunakan grid layout. Dengan posisi baris 0 dan kolom 1.
        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’.

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

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