Pada artikel kali ini kita akan membuat GUI Form Input dengan memanfaatkan TkInter dengan media penyimpanan (Database) sqlite, bila kalian belum membaca artikel sebelum ini silahkan ikuti link ini. Mengingat sudah lama saya tidak menulis artikel tentang Python, saya tidak ingin web ini hanya melulu membahas tentang Web Programing agar seimbang, sedikit belajar tentang TkInter yang tidak terlalu menguras pikiran dan sangat cocok untuk pembuatan Program berbasis Desktop (GUI) untuk Programer pemula seperti saya. Mengapa saya menggunakan TkInter sebagai basis default pemrograman GUI pada Python tidak menggunakan WxWidget, PyQt yang sudah begitu banyak komponen - komponen pendukungnya! Simple saja alasannya, menggunakan TkInter karena default bawaan dari Python itu sendiri dan merupakan standart pemrograman GUI di Python, kalau kita sudah terbiasa dengan lingkungan standart untuk berpindah ke yang lain akan sangat mudah Smile.

OK sebelum melanjutkan ke pemrograman kita buat terlebih dahulu sebuah database beri nama database.sqlite dan sebuah table seperti dibawah. 

CREATE TABLE "tb_customer" (
    "CS_ID" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL ,
    "CS_FNAME" VARCHAR NOT NULL ,
    "CS_LNAME" VARCHAR,
    "CS_ADDRESS" VARCHAR,
    "CS_TELP" VARCHAR,
    "DATE_ENTRY" DATETIME DEFAULT CURRENT_TIMESTAMP,
    "STATUS" CHAR NOT NULL  DEFAULT 1
);

Saya menggunakan sqlite pada pembuatan Database diatas, kalian bisa membaca melalui link ini, untuk lebih jelasnya.

buat 1 file bernama frmPython.py isi seperti dibawah

#!/usr/bin/python

from Tkinter import *
import tkMessageBox
import sqlite3

class FrmPython(Frame):

   def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent

        self.koneksiDatabase() // fungsi untuk koneksi ke database sqlite
        self.showWindow() // membuat form window input

   def showWindow(self):
        self.w = 350
        self.h = 200
        sw = self.parent.winfo_screenwidth()
        sh = self.parent.winfo_screenheight()
        x = (sw - self.w)/2
        y = (sh - self.h)/2

        self.parent.geometry('%dx%d+%d+%d' % (self.w,self.h,x,y)) // letakkan window posisi di tengah
        self.parent.resizable(False, False) // hilangkan maximize window
        self.parent.title("Form Input") // beri nama Form window

        self.component() // panggil fungsi Component
        self.eventHandler() // panggil fungsi eventHandler

    def component(self):
        """ Declare Variable  """
        self.fname = StringVar()
        self.lname = StringVar()
        self.address = StringVar()
        self.telp = StringVar()

        """ Label Position """
        Label(text="",anchor=W).grid(column=1,row=0, columnspan=2)
        Label(text="",anchor=W).grid(column=1,row=5, columnspan=2)
        Label(text="First Name", width=10,padx=5,pady=5,anchor=W).grid(column=1,row=1,sticky=N+S)
        Label(text="Last Name", width=10,padx=5,pady=5,anchor=W).grid(column=1,row=2,sticky=N+S)
        Label(text="Address", width=10,padx=5,pady=5,anchor=W).grid(column=1,row=3,sticky=N+S)
        Label(text="Telephone", width=10,padx=5,pady=5,anchor=W).grid(column=1,row=4,sticky=N+S)

        """ Input Position """
        self.namaDepan =  Entry(width=24,textvariable=self.fname,takefocus=1) // Field First Name
        self.namaBelakang = Entry(width=30,textvariable=self.lname,takefocus=1) // Field Last name
        self.alamat = Entry(width=24,textvariable=self.address,takefocus=1) // FIeld Alamat
        self.telpon = Entry(width=15,textvariable=self.telp,takefocus=1) // Field Telepon

        self.namaDepan.grid(column=2,row=1,sticky=N+S+W)
        self.namaBelakang.grid(column=2,row=2,sticky=N+S+W)
        self.alamat.grid(column=2,row=3,sticky=N+S+W)
        self.telpon.grid(column=2,row=4,sticky=N+S+W)

        """ Button """
        self.btnSimpan = Button(text="Simpan",width=10, pady=8, command=self.simpanClick) // Tombol Simpan
        self.btnBatal = Button(text="Batal",width=10, pady=8, command=self.cleanField) // Tombol Batal

        self.btnSimpan.grid(column=1, row=6, columnspan= 2, sticky=N+S+E) // atur Posisi Button Simpan
        self.btnBatal.grid(column=2, row=6, columnspan= 2, sticky=N+S+W) // atur Posisi Button Batal

        self.namaDepan.focus_set() // focus pada field pertama (First Name)

   """ Koneksi database """
    def koneksiDatabase(self):
        try:
            self.db = sqlite3.connect('./data/database.sqlite') // file database saya letakan pada folder data
            self.cur = self.db.cursor()

            print "Tekoneksi Database"

        except Exception:
            print "Tidak terkoneksi database"

   """ Event Form """
    def eventHandler(self):
        self.namaDepan.bind('<Return>', self.namaDepan_focus) // ketika tekan enter jalankan fungsi namaDepan_focus
        self.namaBelakang.bind('<Return>', self.namaBelakang_focus) // ketika tekan enter jalankan fungsi NamaBelakang_focus
        self.alamat.bind('<Return>', self.alamat_focus) // ketika tekan enter jalankan fungsi alamat_focus
        self.telpon.bind('<Return>', self.telpon_focus) // ketika tekan enter jalankan fungsi telpon_focus
        self.btnSimpan.bind('<KeyRelease>', self.simpanEnter) // ketika tekan enter jalankan fungsi SimpanEnter

    def simpanClick(self):
        self.simpanData() // jalankan fungsi SimpanData saat Tombol simpan di klik

    def simpanEnter(self,event):
        self.simpanData() // jalankan fungsi SimpanData saat tekan enter pada Tombol Simpan

    def cleanField(self): // fungsi untuk mengosongkan isi dari FirstName, LastName, Alanatm Telpon
        self.namaDepan.delete(0, END)
        self.namaBelakang.delete(0,END)
        self.alamat.delete(0, END)
        self.telpon.delete(0, END)

        self.namaDepan.focus_set()

    def simpanData(self):
        query = "INSERT INTO tb_customer (CS_FNAME, CS_LNAME, CS_ADDRESS, CS_TELP) VALUES('%s','%s','%s','%s')" %(
                self.namaDepan.get(), self.namaBelakang.get(), self.alamat.get(), self.telpon.get()) // masukkan data yang diinput kedalam database
        tkMessageBox.showinfo("Informasi", "Data telah disimpan.", parent=self) // Tampilkan pesan bila berhasil disimpan

        self.cur.execute(query) // jalankan query insert data
        self.db.commit() // Commit ke tabel bila tidak ada error

        self.cleanField() // bersihkan field

    def namaDepan_focus(self, event): // focus cursor pada field NamaBelakang
        self.namaBelakang.focus_set()

    def namaBelakang_focus(self, event): // focus cursor pada field Alamat
        self.alamat.focus_set()

    def alamat_focus(self, event): // focus cursor pada field Telpon
        self.telpon.focus_set()

    def telpon_focus(self, event): // focus cursor pada tombol SImpan
        self.btnSimpan.focus_set()

if(__name__ == '__main__'):
   root = Tk()
   FrmPython(root)
   root.mainloop()

Bila kalian jalankan outputnya seperti gambar dibawah ini.

 

 

Sangat Simple sekali program yang kita buat kali ini, tapi paling tidak kita sdah tahu cara untuk input data ke database menggunakan TkInter,

 

DOWNLOAD