Text Editor Tkinter Python versi 1

BelajarPython - Assalamualaikum wr. wb.

Jumpa lagi sahabat python.. Pada kesempatan kali ini saya akan mengajak kalian untuk membuat mini aplikasi lagi nih.. Seperti apa? Langsung saja yuk di simak...

Pengenalan aplikasi yang akan kita buat.

Aplikasi yang kita buat kali ini adalah aplikasi text editor.. Dengan fungsi standart saja seperti pada aplikasi editor lain nya.. Ya seperti save, copy paste, undo, redo dan lain sebagainya.. Dan gak ada yang spesial sih.. hehe

Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat semua versi nya, KLIK DISINI ya...

Kali ini, saya akan memberikan versi pertama. Dimana versi saya hanya membrti dua fitur dasar. Yaitu membuka file dan menyimpan file.

Rincian Lengkap Aplikasi TextEditor Tkinter Versi 1.0

Aplikasi ini menggunakan library Tkinter.. Jadi untuk menjalankannya, kalian tidak perlu install library tambahan.. Dan berikut rincian lengkap versi ini..

Nama: mn-TextEdit 1.0
Versi: 1.0 || selanjutnya.
Platform: Python 3.x  || Install.
Modul: Tkinter.
Baris Code: +-92 baris.
Penambahan: +-92  baris.
Terdiri dari: 1 class dan 9 metode.
Fitur: open dan save.
Kelemahan: masih sangat sederhana.
syarat menjalankan: Python 3.x, dan editor teks / IDE.
Cara menjalankan: install python 3, copy paste code program pada editor/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.. 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 Text Editor Tkinter versi 1.0

Nah lalu seperti apa code program versi ini ? Oke, Berikut saya berikan code program nya ya...


from tkinter import *
from tkinter import messagebox
from tkinter.filedialog import asksaveasfilename
from tkinter import filedialog
import os

class SimpleEditor(Frame):
    def __init__(self, parent=None, file=None):
        Frame.__init__(self, parent)
        self.frm = Frame(parent)
        self.frm.pack(fill=X)
        self.buatJudul()
        parent.title('Text editor dengan copy paste - dari mn-belajarpython.blogspot.co.id')
        self.buatTombol()
        self.kolomTeksUtama()
        self.settext(text='',file=file)
        self.kolomTeks.config(font=('DejaVu Sans Mono', 10))
        self.path = ''

    def buatTombol(self):
        Button(self.frm, text='Open',relief='flat',  command=self.bukaFile).pack(side=LEFT)
        Button(self.frm, text='Simpan',relief='flat',  command=self.perintahSimpan).pack(side=LEFT)

    def kolomTeksUtama(self):
        scroll = Scrollbar(self)
        kolomTeks = Text(self, relief=SUNKEN)
        scroll.config(command=kolomTeks.yview)
        kolomTeks.config(yscrollcommand=scroll.set)
        scroll.pack(side=RIGHT, fill=Y)
        kolomTeks.pack(side=LEFT, expand=YES, fill=BOTH)
        self.kolomTeks = kolomTeks
        self.pack(expand=YES, fill=BOTH)

    def perintahSimpan(self):
        print(self.path)
        if self.path:
            alltext = self.gettext()
            open(self.path, 'w').write(alltext)
            messagebox.showinfo('Berhasil', 'Selamat File telah tersimpan ! ')
        else:
            tipeFile = [('Text file', '*.txt'), ('Python file', '*asdf.py'), ('All files', '.*')]
            filename = asksaveasfilename(filetypes=(tipeFile), initialfile=self.kolomJudul.get())
            if filename:
                alltext = self.gettext()
                open(filename, 'w').write(alltext)
                self.path = filename

    def settext(self, text='', file=None):
        if file:
            text = open(file, 'r').read()
        self.kolomTeks.delete('1.0', END)
        self.kolomTeks.insert('1.0', text)
        self.kolomTeks.mark_set(INSERT, '1.0')
        self.kolomTeks.focus()

    def gettext(self):
        return self.kolomTeks.get('1.0', END+'-1c')

    def buatJudul(self):
        top = Frame(root)
        top.pack(fill=BOTH, expand=1, padx=17, pady=5)
        judul = Label(top, text="Judul : ")
        judul.pack(side="left")
        self.kolomJudul = Entry(top)
        self.kolomJudul.pack(side="left")

    def bukaFile(self):
        extensiFile = [ ('All files', '*'), ('Text files', '*.txt'),('Python files', '*.py')]
        buka = filedialog.askopenfilename(filetypes = extensiFile)
        if buka != '':
            text = self.readFile(buka)
            if text:
                self.path = buka
                nama = os.path.basename(buka)
                self.kolomJudul.delete(0, END)
                self.kolomJudul.insert(END, nama)
                self.kolomTeks.delete('0.1',END)
                self.kolomTeks.insert(END, text)

    def readFile(self, filename):
        try:
            f = open(filename, "r")
            text = f.read()
            return text
        except:
            messagebox.showerror("Error!!","Maaf file tidak dapat dibuka ! :) \nsabar ya..")
            return None


root = Tk()
SimpleEditor(root)
mainloop()


Dan berikut contoh screenshoot dari mini aplikasi kali ini...


Penjelasan code program Aplikasi Text Editor Tkinter versi 1.0

Sekarang saya akan mencoba untuk menjelaskan code program yang sudah saya bagikan di atas tadi.. Agar kalian lebih mudah untuk memahaminya.. Oke, Langsung saja..
[NOTE : Teks berwarna MERAH pada penjelasan adalah Code tambahan yang tidak ada di versi sebelumnyaDan yang Berwarna BIRU akan di hapus di versi berikutnya. Jika Code berwarna MERAH dan komentar berwarna BIRU maka merupakan code baru dan akan di hapus di versi berikutnya]

from tkinter import *  //mengimport semua class tkinter
from tkinter import messagebox  //mengimport class messgebox dari tkinter
from tkinter.filedialog import asksaveasfilename  //mengimport ‘askopenfilename’ dari class ‘filedialog’ tkinter
from tkinter import filedialog  //mengimport class file dialog dari library tkinter
import os  //mengimport class python yaitu os

class SimpleEditor(Frame):  //membuat class ‘SImpleEditor’ dengan inheritence class ‘Frame’ (di tkinter)
    def __init__(self, parent=None, file=None):  //konstruktor class diatas
        Frame.__init__(self, parent)  //menjalankan construktor class ‘Frame’ (parent)
        self.frm = Frame(parent)  //membuat frame (tempat tombol/toolbar)
        self.frm.pack(fill=X)  //memasukkan frame ke window
        self.buatJudul()  //menjalankan metode ‘buatJudul’
        parent.title('Text editor dengan copy paste - dari mn-belajarpython.blogspot.co.id')  //mengubah judul
        self.buatTombol()  //menjalankan metode buatTombol
        self.kolomTeksUtama()  //menjalankan metode ‘kolomTeksUtama’
        self.settext(text='',file=file)  //memasukkan teks (kosongan)
        self.kolomTeks.config(font=('DejaVu Sans Mono', 10))  //mengatur jenis dan ukuran teks 
        self.path = ''  //menampung path

    def buatTombol(self):  //metode ‘buatTombol’
        Button(self.frm, text='Open',relief='flat',  command=self.bukaFile).pack(side=LEFT)  //membuat tombol ‘Open’ yang menjalankan metode ‘bukaFile’ ketika di klik
        Button(self.frm, text='Simpan',relief='flat',  command=self.perintahSimpan).pack(side=LEFT)  //membuat tombol ‘Simpan’ yang menjalankan metode ‘perintahSImpan’ ketika di klik

    def kolomTeksUtama(self):  //metode ‘kolomTeksUtama’
        scroll = Scrollbar(self)  //membuat scrollbar
        kolomTeks = Text(self, relief=SUNKEN)  //membuat kolom teks utama (tempat teks)
        scroll.config(command=kolomTeks.yview)  //menghubungkan scrollbar ke kolom teks utama
        kolomTeks.config(yscrollcommand=scroll.set)  //menghubungkan teks utama dengan scrollbar
        scroll.pack(side=RIGHT, fill=Y)  //memasukkan scrollbar ke window
        kolomTeks.pack(side=LEFT, expand=YES, fill=BOTH)
        self.kolomTeks = kolomTeks  //menampung kolom teks utama
        self.pack(expand=YES, fill=BOTH)  //memasukkan kolom teks utama ke window


    def perintahSimpan(self):  //metode ‘perintahSImpan
        if self.path:  //memastikan path tidak kosong
            alltext = self.gettext()  //mendapatkan smua text
            open(self.path, 'w').write(alltext)  /menyimpan file
            messagebox.showinfo('Berhasil', 'Selamat File telah tersimpan ! ')  //menampilkan pesan berhasil
        else:
            tipeFile = [('Text file', '*.txt'),('Python file', '*.py'), ('All files', '.*')]  //membuka tipe yang di cari  di file dialog untuk menyimpan file
            filename = asksaveasfilename(filetypes=(tipeFile), initialfile=self.kolomJudul.get())  //menampilkan file dialog dan mendapatkan lokasi tempat menyimpan file yang di pilih user
            if filename:  //memastikan user menyimpan file (tidak klik cancel)
                alltext = self.gettext()  //mendapatkan semua teks
                open(filename, 'w').write(alltext)  //memasukkan teks ke dalam file (menjadi file)
                self.path = filename //untuk menampung path

    def settext(self, text='', file=None):  //metode settext
        if file:  //memastikan variabel parameter ‘file’ tidak kosong/None
            text = open(file, 'r').read()  //membaca isi file
        self.kolomTeks.delete('1.0', END)  //menghapus semua teks yang ada di kolom utama
        self.kolomTeks.insert('1.0', text)  //memasukkan teks (yang telah dibaca) ke klom utama
        self.kolomTeks.mark_set(INSERT, '1.0')  //memberikan tanda
        self.kolomTeks.focus()  //memfokuskan cursor ke kolom teks utama

    def gettext(self):  //metode getText
        return self.kolomTeks.get('1.0', END+'-1c')  //mendapatkan semua teks di klom utama

    def buatJudul(self):  //metode buatJudul
        top = Frame(root)  //membuat frame
        top.pack(fill=BOTH, expand=1, padx=17, pady=5)  //memasukkan frame ke window
        judul = Label(top, text="Judul : ") //membuat label judul
        judul.pack(side="left")  //memasukkan judul ke window
        self.kolomJudul = Entry(top)  //membuat kolom teks untuk judul
        self.kolomJudul.pack(side="left") //memasukkan kolom judul

    def bukaFile(self):  //metode bukaFile
        extensiFile = [ ('All files', '*'), ('Text files', '*.txt'),('Python files', '*.py')]  //insialisasi tipe file
        buka = filedialog.askopenfilename(filetypes = extensiFile)  //membuka file dialog untuk memilih file untuk di buka 
        if buka != '':  //memastikan user memilih file
            text = self.readFile(buka)  //mendapatkan semua teks (menjalankan metode ‘readFIle’
            if text:    //memastikan ada teks
                self.path = buka  //menampung path
                nama = os.path.basename(buka)  //mendapatkan nama file
                self.kolomJudul.delete(0, END)  //menghapus semua teks di kolom judul
                self.kolomJudul.insert(END, nama)  //memasukkan nama file ke kolom judul
                self.kolomTeks.delete('0.1',END) //menghapus semua teks di kolom utama
                self.kolomTeks.insert(END, text)  //memasukkan teks yang telah di baca ke dalam kolom teks utama

    def readFile(self, filename):  //metode ‘readFile’
        try:  //mencoba beberapa code program
            f = open(filename, "r")  //membuka file 
            text = f.read()  //membaca teks di dalam file
            return text  //mengembalikan teks
        except:  //jika gagal membaca file
            messagebox.showerror("Error!!","Maaf file tidak dapat dibuka ! :) \nsabar ya..")  //menampilkan pesan dialog error
            return None  //mengembalikan None

root = Tk()  //menampilkan window Tkinter
SimpleEditor(root)  //menjalankan metode ‘SimpleEditor’

mainloop()  //agar window tidak langsung close saat di jalankan


Nah itu dia temen - temen penjelasan code programnya.. Mohon maaf apabila ada penjelasan yang kurang jelas, atau bahkan ada kekeliruan... Mohon kasi pembenaran atau pendapat kalian di kolom komentar ya... Biar kita bisa belajar bersama..

Oke terimakasih dan sampai di sini dulu ya... Jangan lupa untuk membaca versi yang lain... Biar ilmunya nambah.. Hehe.. Temikasih sekali lagi dan sekian...

Wassalamualaikum wr. wb.

Previous
Next Post »
Thanks for your comment