Form yang dibuat kemarin masih kosong. Belum ada datanya. Dalam latihan kali ini, kita akan menampilkan data mahasiswa yang terdiri atas kolom NIM, NAMA, dan ALAMAT. Data mahasiswa yang akan ditampilkan tersebut dipersiapkan terlebih dahulu. Hal ini dilakukan karena fungsi penambahan belum kita buat. Sehingga supaya datanya tampil, maka datanya kita buat secara manual.
Bagaimana cara membuatnya?
Bagaimana cara membuatnya?
Data yang akan kita tampilkan ini kita buat secara manual terlebih dahulu. Kita buat file teks dengan pola tertentu supaya bisa kita tampilkan di form yang telah dibuat. Dalam aplikasi yang kompleks, data biasanya tersimpan di database / tabel sehingga bisa lebih mudah pengelolaannya. Akan tetapi untuk contoh kali ini kita akan membuat data yang disimpan dalam file teks.
Untuk latihan buatlah file teks dengan nama mhs.data dengan menggunakan editor yang Anda suka. Kalau di ubuntu banya pilihan editor yang bisa digunakan. Mulai dari murni CLI dengan menggunakan echo dan redirection, editor nano, editor joe, editor emacs, ataupun menggunakan editor GUI. Tentu saja menggunakan IDE yang lebih powerfull boleh dilakukan. Seperti pyCharm atau yang lainnya.
File mhs.data yang kita buat dengan pola seperti ini:
Antar masing-masing kolom dipisah dengan menggunakan karakter #. Satu baris data menyatakan satu data mahasiswa. Tentu ini merupakan bentuk sederhana.
Untuk menampilkan data tersebut kedalam form yang telah disediakan sebelumnya, ada sejumlah langkah yang perlu dilakukan. Langkah pertama membaca file tersebut. Langkah selanjutnya adalah menambahkan data yang sudah dibaca ke dalam treeview dalam form yang telah disiapkan. Untuk itu, fungsi tombol_refresh_click() dalam rutin sebelumnya akan dimodifikasi untuk melakukan dua langkah tersebut. Berikut modifikasi yang perlu dilakukan terhadap fungsi tombol_refresh_click()
Untuk latihan buatlah file teks dengan nama mhs.data dengan menggunakan editor yang Anda suka. Kalau di ubuntu banya pilihan editor yang bisa digunakan. Mulai dari murni CLI dengan menggunakan echo dan redirection, editor nano, editor joe, editor emacs, ataupun menggunakan editor GUI. Tentu saja menggunakan IDE yang lebih powerfull boleh dilakukan. Seperti pyCharm atau yang lainnya.
File mhs.data yang kita buat dengan pola seperti ini:
123456789#Putri Lutfiah#Kudus 123456790#Ade Irma#Jepara 123456791#Dandi Yudistira#Jepara 123456792#Wiku Saptanegara#Jepara 123456793#Wuri Destiyani#Kudus
Antar masing-masing kolom dipisah dengan menggunakan karakter #. Satu baris data menyatakan satu data mahasiswa. Tentu ini merupakan bentuk sederhana.
Untuk menampilkan data tersebut kedalam form yang telah disediakan sebelumnya, ada sejumlah langkah yang perlu dilakukan. Langkah pertama membaca file tersebut. Langkah selanjutnya adalah menambahkan data yang sudah dibaca ke dalam treeview dalam form yang telah disiapkan. Untuk itu, fungsi tombol_refresh_click() dalam rutin sebelumnya akan dimodifikasi untuk melakukan dua langkah tersebut. Berikut modifikasi yang perlu dilakukan terhadap fungsi tombol_refresh_click()
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)
Supaya pembacaan dan penambahan ke treeview bisa otomatis dijalankan setiap kali form pengelolaan data tampil, maka fungsi tombol_refresh_click() perlu dipanggil di fungsi data() yang berfungsi untuk menampilkan form pengelolaan data. Pemanggilan fungsi ini cukup sederhana hanya perlu menambahkan satu baris kode berikut ke dalam baris terakhir fungsi data()
#Pemanggilan refresh data
tombol_refresh_click()
Untuk memudahkan mencoba latihan ini, berikut rutin lengkap dari latihan ini:
# simpan sebagai gui07.py
# jalankan dengan perintah python gui07.py
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox as msgbox
def tombol_tambah_click():
global formData
msgbox.showinfo("Tambah Data", "Under Construction!", parent=formData)
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()
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 form pengelolaan data bisa dilihat pada gambar berikut:
Ok. Selamat Mencoba!
No comments:
Post a Comment