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 .
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 sqlite3class FrmPython(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parentself.koneksiDatabase() // fungsi untuk koneksi ke database sqlite
self.showWindow() // membuat form window inputdef 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)/2self.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 windowself.component() // panggil fungsi Component
self.eventHandler() // panggil fungsi eventHandlerdef 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 Teleponself.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 Batalself.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 Batalself.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 SimpanEnterdef simpanClick(self):
self.simpanData() // jalankan fungsi SimpanData saat Tombol simpan di klikdef simpanEnter(self,event):
self.simpanData() // jalankan fungsi SimpanData saat tekan enter pada Tombol Simpandef 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 disimpanself.cur.execute(query) // jalankan query insert data
self.db.commit() // Commit ke tabel bila tidak ada errorself.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,