Tombol tambah data yang ada di form latihan sebelumnya masih kosong. Hanya menampilkan kotak pesan dalam pembuatan. Latihan kali ini kita akan membuat form penambahan data. Saat tombol tambah data di klik akan dimunculkan form kosong untuk menambah data sesuai dengan kolom yang dibutuhkan (NIM, NAMA, ALAMAT).
Untuk menambah data kita perlu mengubah kode yang ada di fungsi tombol_tambah_click()
Di dalamnya perlu dibuat rutin untuk menampilkan form penambahan yang berisi kotak input untuk NIK, NAMA, dan ALAMAT. Juga perlu adanya tambahan tombol simpan dan batal dalam form penambaha data tersebut.
Penambahan kode untuk menangani ketika tombol simpan dan batal juga perlu ditambah. Fungsi tombol simpan dan batal diletakkan sebelum fungsi tombol_tambah_click(). Tombol simpan akan memanggil fungsi simpan() yang akan kita definisikan. Fungsi simpan ini dibuat tersendiri supaya nanti bisa dipanggil lagi di rutin lain yang membutuhkan.
Modifikasi fungsi tombol_tambah_click() bisa dilakukan dengan menggunakan rutin berikut:
Sedangkan penambahan rutin untuk fungsi tombol_tambah_simpan() dan tombol_tambah_batal() dilakukan dengan rutin sebagai berikut:
Untuk fungsi simpan() yang digunakan berisi rutin untuk menyimpan semua data mahasiswa. Jadi fungsinya replace terhadap semua data yang tersimpan dalam memory. Fungsi simpan() didefinisikan sebagai berikut:
Untuk kemudahan, berikut rutin lengkap dari latihan kali ini:
Tampilan program untuk penambahan data seperti berikut ini:
Di dalamnya perlu dibuat rutin untuk menampilkan form penambahan yang berisi kotak input untuk NIK, NAMA, dan ALAMAT. Juga perlu adanya tambahan tombol simpan dan batal dalam form penambaha data tersebut.
Penambahan kode untuk menangani ketika tombol simpan dan batal juga perlu ditambah. Fungsi tombol simpan dan batal diletakkan sebelum fungsi tombol_tambah_click(). Tombol simpan akan memanggil fungsi simpan() yang akan kita definisikan. Fungsi simpan ini dibuat tersendiri supaya nanti bisa dipanggil lagi di rutin lain yang membutuhkan.
Modifikasi fungsi tombol_tambah_click() bisa dilakukan dengan menggunakan rutin berikut:
def tombol_tambah_click():
global formData
global formTambah
global txNim
global txNama
global txAlamat
formTambah = tk.Toplevel(formData)
formTambah.title("Tambah Data Mahasiswa")
frameTambah = tk.Frame(formTambah)
#entri untuk NIM
frameNIM = tk.Frame(frameTambah)
lbNim = tk.Label(frameNIM, text="NIM", width=10)
txNim = tk.Entry(frameNIM, width=20)
lbNim.pack(side=tk.LEFT, anchor='w')
txNim.pack(side=tk.LEFT, anchor='e')
frameNIM.pack(side=tk.TOP, anchor='w')
#entri untuk NAMA
frameNAMA = tk.Frame(frameTambah)
lbNama = tk.Label(frameNAMA, text="NAMA", width=10)
txNama = tk.Entry(frameNAMA, width=30)
lbNama.pack(side=tk.LEFT, anchor='w')
txNama.pack(side=tk.LEFT, anchor='e')
frameNAMA.pack(side=tk.TOP, anchor='w')
#entri untuk Alamat
frameALAMAT = tk.Frame(frameTambah)
lbAlamat = tk.Label(frameALAMAT, text="ALAMAT", width=10)
txAlamat = tk.Entry(frameALAMAT, width=50)
lbAlamat.pack(side=tk.LEFT, anchor='w')
txAlamat.pack(side=tk.LEFT, anchor='e')
frameALAMAT.pack(side=tk.TOP)
#Tombol
frameTOMBOL = tk.Frame(frameTambah)
btnSimpan = tk.Button(frameTOMBOL, text="Simpan", width=10, command=tombol_tambah_simpan)
btnCancel = tk.Button(frameTOMBOL, text="Batal", width=10, command=tombol_tambah_batal)
btnSimpan.pack(side=tk.LEFT)
btnCancel.pack(side=tk.LEFT)
frameTOMBOL.pack(side=tk.BOTTOM)
frameTambah.pack()
Sedangkan penambahan rutin untuk fungsi tombol_tambah_simpan() dan tombol_tambah_batal() dilakukan dengan rutin sebagai berikut:
def tombol_tambah_simpan():
global formTambah
global data_mhs
global txNim
global txNama
global txAlamat
databaru = [txNim.get(), txNama.get(), txAlamat.get()]
data_mhs.append(databaru)
simpan(data_mhs)
formTambah.destroy()
tombol_refresh_click()
def tombol_tambah_batal():
global formTambah
if msgbox.askyesno("Tambah Data", "Yakin batal menambahkan data ?", parent=formTambah) == True:
formTambah.destroy()
Untuk fungsi simpan() yang digunakan berisi rutin untuk menyimpan semua data mahasiswa. Jadi fungsinya replace terhadap semua data yang tersimpan dalam memory. Fungsi simpan() didefinisikan sebagai berikut:
def simpan(data):
f = open('mhs.data', 'wt')
for item in data:
if len(item)==3:
f.write("{}#{}#{}\n".format(item[0], item[1], item[2]))
f.close()
Untuk kemudahan, berikut rutin lengkap dari latihan kali ini:
# simpan sebagai gui08.py
# jalankan dengan perintah python gui08.py
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox as msgbox
def simpan(data):
f = open('mhs.data', 'wt')
for item in data:
if len(item)==3:
f.write("{}#{}#{}\n".format(item[0], item[1], item[2]))
f.close()
def tombol_tambah_simpan():
global formTambah
global data_mhs
global txNim
global txNama
global txAlamat
databaru = [txNim.get(), txNama.get(), txAlamat.get()]
data_mhs.append(databaru)
simpan(data_mhs)
formTambah.destroy()
tombol_refresh_click()
def tombol_tambah_batal():
global formTambah
if msgbox.askyesno("Tambah Data", "Yakin batal menambahkan data ?", parent=formTambah) == True:
formTambah.destroy()
def tombol_tambah_click():
global formData
global formTambah
global txNim
global txNama
global txAlamat
formTambah = tk.Toplevel(formData)
formTambah.title("Tambah Data Mahasiswa")
frameTambah = tk.Frame(formTambah)
#entri untuk NIM
frameNIM = tk.Frame(frameTambah)
lbNim = tk.Label(frameNIM, text="NIM", width=10)
txNim = tk.Entry(frameNIM, width=20)
lbNim.pack(side=tk.LEFT, anchor='w')
txNim.pack(side=tk.LEFT, anchor='e')
frameNIM.pack(side=tk.TOP, anchor='w')
#entri untuk NAMA
frameNAMA = tk.Frame(frameTambah)
lbNama = tk.Label(frameNAMA, text="NAMA", width=10)
txNama = tk.Entry(frameNAMA, width=30)
lbNama.pack(side=tk.LEFT, anchor='w')
txNama.pack(side=tk.LEFT, anchor='e')
frameNAMA.pack(side=tk.TOP, anchor='w')
#entri untuk Alamat
frameALAMAT = tk.Frame(frameTambah)
lbAlamat = tk.Label(frameALAMAT, text="ALAMAT", width=10)
txAlamat = tk.Entry(frameALAMAT, width=50)
lbAlamat.pack(side=tk.LEFT, anchor='w')
txAlamat.pack(side=tk.LEFT, anchor='e')
frameALAMAT.pack(side=tk.TOP)
#Tombol
frameTOMBOL = tk.Frame(frameTambah)
btnSimpan = tk.Button(frameTOMBOL, text="Simpan", width=10, command=tombol_tambah_simpan)
btnCancel = tk.Button(frameTOMBOL, text="Batal", width=10, command=tombol_tambah_batal)
btnSimpan.pack(side=tk.LEFT)
btnCancel.pack(side=tk.LEFT)
frameTOMBOL.pack(side=tk.BOTTOM)
frameTambah.pack()
def tombol_edit_click():
global formData
msgbox.showinfo("Edit Data", "Under Construction!", parent=formData)
def tombol_hapus_click():
global formData
msgbox.showinfo("Hapus Data", "Under Construction!", parent=formData)
def tombol_refresh_click():
global formData
global tv
global data_mhs
data_mhs = []
try:
file = open("mhs.data", "rt")
data = file.read()
file.close()
data_baris = data.split("\n")
for baris in data_baris:
item = baris.split("#")
if len(item) == 3:
data_mhs.append((item))
except:
'''kosong'''
#Hapus dulu yang ada
for i in tv.get_children():
tv.delete(i)
#tampilkan di treeview
i=0
for mhs in data_mhs:
i=i+1
tv.insert("","end", text=str(i), values=mhs)
def tombol_tutup_click():
global formData
hasil = msgbox.askyesno("Tutup", "Anda yakin nutup form?", parent=formData)
if hasil==True:
formData.destroy()
def data():
global win
global formData
global tv
formData = tk.Toplevel(win)
formData.title("Data Mahasiswa")
# membuat kotak dalam form untuk tombol/entrian yang akan kita buat nantinya
frame = tk.Frame(formData)
tv = tk.ttk.Treeview(frame)
tv['columns'] = ('Nim', 'Nama', 'Alamat')
tv.heading("#0", text='No')
tv.column("#0", anchor="w", width=50)
tv.heading('Nim', text='Nim')
tv.column('Nim', anchor='center', width=100)
tv.heading('Nama', text='Nama')
tv.column('Nama', anchor='center', width=200)
tv.heading('Alamat', text='Alamat')
tv.column('Alamat', anchor='center', width=300)
btnFrame = tk.Frame(frame)
tambah = tk.Button(btnFrame, text="Tambah", width=15, command=tombol_tambah_click)
edit = tk.Button(btnFrame, text="Edit", width=15, command=tombol_edit_click)
hapus = tk.Button(btnFrame, text="Hapus", width=15, command=tombol_hapus_click)
refresh = tk.Button(btnFrame, text="Refresh", width=15, command=tombol_refresh_click)
tutup = tk.Button(btnFrame, text="Tutup", width=15, command=tombol_tutup_click)
tv.pack()
tambah.pack(side=tk.LEFT)
edit.pack(side=tk.LEFT)
hapus.pack(side=tk.LEFT)
refresh.pack(side=tk.LEFT)
tutup.pack(side=tk.LEFT)
btnFrame.pack(side=tk.BOTTOM)
frame.pack()
#Pemanggilan refresh data
tombol_refresh_click()
def keluar():
global win
win.quit()
data_mhs=[]
win = tk.Tk()
win.title("Sistem Informasi")
win.geometry('800x600')
menubar = tk.Menu(win)
appmenu = tk.Menu(menubar)
appmenu.add_command(label='Data Mahasiswa', command=data)
appmenu.add_separator()
appmenu.add_command(label='Keluar', command=keluar)
menubar.add_cascade(label='Data', menu=appmenu)
win.config(menu=menubar)
win.mainloop()
Tampilan program untuk penambahan data seperti berikut ini:
No comments:
Post a Comment