Tampilkan postingan dengan label tkinter. Tampilkan semua postingan
Tampilkan postingan dengan label tkinter. Tampilkan semua postingan

Rabu, 12 Desember 2018

Create Read Update Delete data PyMysql dan Tkinter part2

Seperti yang saya janjikan pada postingan sebelumnya saya akan melanjutkan fungsi Read, Update dan Delete database. Ini merupakan lanjutan kode yang telah dibuat selanjutnya.
Pertama kita buat Treeview untuk melihat data yang sudah tersimpan di mysql. Tambahkan kode ini sebelum baris terakhir kode sebelumnya. Kode Treeview:
tree = ttk.Treeview(win,columns=("Nim", "Nama", "Jenis Kelamin", "Tempat Lahir", "Tanggal Lahir", "Alamat", "Pekerjaan"), selectmode="extended", height=200) tree.heading('Nim', text="Nim", anchor=W) tree.heading('Nama', text="Nama", anchor=W) tree.heading('Jenis Kelamin', text="Jenis Kelamin", anchor=W) tree.heading('Tempat Lahir', text="Tempat Lahir", anchor=W) tree.heading('Tanggal Lahir', text="Tanggal Lahir", anchor=W) tree.heading('Alamat', text="Alamat", anchor=W) tree.heading('Pekerjaan', text="Pekerjaan", anchor=W) tree.column('#0', stretch=NO, minwidth=0, width=0) tree.column('#1', stretch=NO, minwidth=0, width=100) tree.column('#2', stretch=NO, minwidth=0, width=130) tree.column('#3', stretch=NO, minwidth=0, width=100) tree.column('#4', stretch=NO, minwidth=0, width=150) tree.column('#5', stretch=NO, minwidth=0, width=100) tree.column('#6', stretch=NO, minwidth=0, width=180) tree.grid(column=0,columnspan=6,row=9)
Lalu buat fungsi read dibawah fungsi database:
def read(): tree.delete(*tree.get_children()) database() cursor.execute("SELECT * FROM `Mahasiswa` ORDER BY `nama_mahasiswa` ASC") fetch = cursor.fetchall() for data in fetch: tree.insert('', 'end', values=(data[0], data[1], data[2], data[3], data[4], data[5], data[6])) cursor.close() conn.close()
Bila sudah maka tambahkan kode read() untuk mengeksekusi fungsi read, taruh sebelum baris terakhir lagi, untuk membaca data setelah applikasi terbuka.Untuk memuat ulang data setelah menambahkannya juga bisa ditambahkan fungsi ini pada baris terakhir. Selanjutnya kita buat fungsi clear() untuk membuat form kosong dari data yang sudah dieksekusi baik telah disuntung, dipilih atau ditambah. Ini merupakan kode fungsi clear:
def clear(): nim.set('') nama.set('') kelamin.set('') tempat.set('') tanggal.set('') alamat.set('') pekerjaan.set('') colNim.configure(state='enabled')
Selanjutnya Kita akan buat fungsi onSelected untuk memilih data dari Treeview ketika diklik dua kali. Ini merupakan fungsi onSelected:
def onSelected(event): global Nim; curItem = tree.focus() contents =(tree.item(curItem)) selecteditem = contents['values'] Nim = selecteditem[0] clear() nim.set(selecteditem[0]) nama.set(selecteditem[1]) kelamin.set(selecteditem[2]) tempat.set(selecteditem[3]) tanggal.set(selecteditem[4]) alamat.set(selecteditem[5]) pekerjaan.set(selecteditem[6]) colNim.configure(state="disabled")
Lalu tambahkan kode ini dibawah tree.grid untuk memberi membuat fungsi onSelected berjalan dengan baik.:
tree.bind('<Double-Button-1>', onSelected)
Untuk mebuat fungsi delete silahkan tambahkan kode ini:
def remove(): if not tree.selection(): sta.config(text="Please select an item first", foreground="red") else: result = tkMessageBox.askquestion('Formulir Mahasiswa', 'Benar ingin menghapusnya?', icon="warning") if result == 'yes': curItem = tree.focus() contents =(tree.item(curItem)) selecteditem = contents['values'] tree.delete(curItem) database() cursor.execute("DELETE FROM `Mahasiswa` WHERE `nim` = %d" % selecteditem[0]) conn.commit() cursor.close() conn.close() sta.config(text="Successfully deleted the data", foreground="black")
Dan fungsi update:
def update(): database() if nim.get() == '' or nim.get() == 0: sta.config(text="Can not entry nim", foreground="red") else: tree.delete(*tree.get_children()) cursor.execute("UPDATE `Mahasiswa` SET `nama_mahasiswa` = (%s), `jenis_kelamin` = (%s), `tempat_lahir` =(%s), `tanggal_lahir` = (%s), `alamat` = (%s), `pekerjaan` = (%s) WHERE `nim` = (%s)", (nama.get(),kelamin.get(),tempat.get(),tanggal.get(),alamat.get(),pekerjaan.get(), int(Nim))) conn.commit() read() clear() sta.config(text="Successfully updated the data", foreground="black")
Bila sudah tinggal buat tombol-tombolnya dengan command yang akan dieksekusi. .: Good Luck :.

Create Read Update Delete data PyMysql dan Tkinter

Pada kesempatan ini saya akan membuat applikasi dimana kita membuat applikasi dekstop (GUI) menggunakan Tkinter dan mengelola datanya ke dalam database mysql. Ini merupakan dokumentasi lanjutan pada tag Python. Saya merekomendasikan untuk pemula belajar dulu ke yang dasarnya dulu. Karena kode ini cukup kompleks. Bahan yang diiperlukan untuk membuat applikasi ini adalah:
  • PhpMyadmin(Server Mysql bisa Xampp/ Lampp dan sebagainya)
  • Python3
  • Tkinter
  • Pip(digunakan untuk menginstal PyMysql)
  • PyMysql
  • Geany atau Text Editor lainya
Saya tidak akan membahas tentang menginstall bahan-bahan diatas silahkan browsing saja. Saya memakai Python3 terbaru. Mari kita melanjutkan tahpan selanjutnya. Buatlah database kampus dan table mahasiswa dengan sql ini.
create database kampus; use kampus; CREATE TABLE `kampus`.`Mahasiswa` ( `nim` INT(10) NOT NULL PRIMARY KEY, `nama_mahasiswa` VARCHAR(60) NOT NULL , `jenis_kelamin` ENUM('laki-laki','perempuan') NOT NULL , `tempat_lahir` VARCHAR(100) NOT NULL , `tanggal_lahir` DATE NOT NULL , `alamat` VARCHAR(500) NOT NULL , `pekerjaan` VARCHAR(50) NOT NULL);
Bila sudah membuat database dan tabel di mysql.Mari kita buat form Mahasiswa dengan menggunakan geany. Buka text editor kalian lalu copy paste kode ini:
#import modules import tkinter as tk import pymysql as PyMysql import tkinter.messagebox as tkMessageBox from tkinter import ttk from tkinter import * win = tk.Tk() win.title('Form Mahasiswa') #variabel untuk koneksi database server_name = 'localhost' username = 'root' password = '' database_name = 'kampus' #buat fungsi-fungsi def database(): global conn, cursor, server_name, username, password, database_name conn = PyMysql.connect(server_name,username,password,database_name) cursor = conn.cursor() def entry(): database() cursor.execute("INSERT INTO Mahasiswa ( nim, nama_mahasiswa, jenis_kelamin, tempat_lahir, tanggal_lahir, alamat, pekerjaan) values ((%s),(%s),(%s),(%s),(%s),(%s),(%s))",(nim.get(),nama.get(),kelamin.get(),tempat.get(),tanggal.get(),alamat.get(),pekerjaan.get())); conn.commit() sta.configure(text = 'Status :Entry data success!') sta.configure(foreground = 'green') #buat variabel-variabel nim = tk.IntVar() nama = tk.StringVar() kelamin = tk.StringVar() tempat = tk.StringVar() tanggal = tk.StringVar() alamat = tk.StringVar() pekerjaan = tk.StringVar() nim.set('') #menginisiasi komponen-komponen labTittle = ttk.Label(win, font=(16), foreground='#0000FF', text='Formulir Mahasiswa') labNim = ttk.Label(win, text='NIM ') labNama = ttk.Label(win, text='Nama ') labJenisKel = ttk.Label(win, text='Jenis Kelamin ') labTempatLah = ttk.Label(win, text='Tempat Lahir ') labTanggaLah = ttk.Label(win, text='Tanggal Lahir ') labAlamat = ttk.Label(win, text='Alamat ') labPekerjaan = ttk.Label(win, text='Pekerjaan ') sta = ttk.Label(win, text='') #colom-colom masukan colNim = ttk.Entry(win, textvariable=nim, width=12) colNama = ttk.Entry(win, textvariable=nama, width=50) colTempat = ttk.Entry(win, textvariable=tempat, width=50) colTanggal = ttk.Entry(win, textvariable=tanggal, width=50) colAlamat = ttk.Entry(win, textvariable=alamat, width=50) #radiobutton dan combobox radLaki = ttk.Radiobutton(win,variable=kelamin, text='laki-laki', value='laki-laki') radPerempuan = ttk.Radiobutton(win,variable=kelamin, text='perempuan', value='perempuan') number_chosen= ttk.Combobox(win, width=12, textvariable=pekerjaan) number_chosen['values']=('Mahasiswa','Wirausaha','Petani','PNS','Lain-lain') #Tombol tombol bAdd = ttk.Button(win, text='Add',command=entry) #menempatkan komponen-komponen labTittle.grid(column=2,sticky=tk.W+tk.E) labNim.grid(column=0,row=1,sticky=tk.W) labNama.grid(column=0,row=2,sticky=tk.W) labJenisKel.grid(column=0,row=3,sticky=tk.W) labTempatLah.grid(column=0,row=4,sticky=tk.W) labTanggaLah.grid(column=0,row=5,sticky=tk.W) labAlamat.grid(column=0,row=6,sticky=tk.W) labPekerjaan.grid(column=0,row=7,sticky=tk.W) colNim.grid(column=1,row=1,sticky=tk.W) colNama.grid(column=1,row=2,columnspan=2,sticky=tk.W) colTempat.grid(column=1,row=4,columnspan=2,sticky=tk.W) colTanggal.grid(column=1,row=5,columnspan=2,sticky=tk.W) colAlamat.grid(column=1,row=6,columnspan=2,sticky=tk.W) radLaki.grid(column=1,row=3,sticky=tk.W+tk.E) radPerempuan.grid(column=2,row=3,sticky=tk.W+tk.E) number_chosen.grid(column=1,row=7,sticky=tk.W) sta.grid(column=1,row=8,sticky=tk.W) bAdd.grid(column=3, row=4,sticky=tk.E) win.mainloop()
Lalu save file tersebut dan namai dengan mahasiswa.py lalu eksekusi file tersebut jika berhasil maka akan tampil seperti ini. Untuk fungsi Read, Update dan Delete akan dibahas pada postingan berikutnya.
 .: Good Luck :.

Rabu, 28 November 2018

Memanipulasi Database pada Tkinter Python part3


Selanjutnya kita akan membuat fungsi select untuk memilih data yang ada di treeview ke kolom-kolom input untuk kita sunting menjadi data yang baru. Tetapi sebelumnya mari kita buat Treeview.bind() untuk membuat aksi ketika data di double-clicked. Masukan tree.bind(‘<Double-Button-1>’, onSelected) ke dalam kode yang telah kita buat posisinya dibawah tree.grid. Di bawah ini merupakan kode untuk fungsi OnSelected().

def onSelected(event):
global ID;
curItem = tree.focus()
contents =(tree.item(curItem))
selecteditem = contents[‘values’]
ID = selecteditem[0]
clear()
name.set(selecteditem[1])
age.set(selecteditem[2])
address.set(selecteditem[3])
salary.set(selecteditem[4])

Silahkan eksekusi untuk mengecek apakah kode yang dimasukan benar. Doubled-click data yang akan dipilih. Bila semua data langsung tampil pada kolom-kolomnya. Selanjutnya buat fungsi update.

def update():
database()
if salary.get() == 0:
sta.config(text=”Please input salary”, foreground=”red”)
else:
tree.delete(*tree.get_children())
cursor.execute(“UPDATE `COMPANY` SET `NAME` = ?, `AGE` = ?, `ADDRESS` =?, `SALARY` = ? WHERE `ID` = ?”, (name.get(),age.get(),address.get(),salary.get(), int(ID)))
conn.commit()
read()
conn.close()
clear()
sta.config(text=”Successfully updated the data”, foreground=”black”)

Lalu tambahkan tombol Update dan tambahkan grid untuk posisinya denga kode ini.
bUpdate = ttk.Button(win, text=’Update’, command=update)

Selesai untuk aksi sunting pada Tkinter selanjutnya kita buat aksi remove untuk menghapus data yang sudah tersimpan di database.

Ini merupakan fungsi remove.

remove():
if not tree.selection():
sta.config(text=”Please select an item first”, foreground=”red”)
else:
result = tkMessageBox.askquestion(‘Manipulation Data Application Python’, ‘Are you sure you want to delete this record?’, icon=”warning”)
if result == ‘yes’:
curItem = tree.focus()
contents =(tree.item(curItem))
selecteditem = contents[‘values’]
tree.delete(curItem)
database()
cursor.execute(“DELETE FROM `COMPANY` WHERE `ID` = %d” % selecteditem[0])
conn.commit()
cursor.close()
conn.close()
sta.config(text=”Successfully deleted the data”, foreground=”black”)

Lalu buat tombol Remove dan posisikan di tempat yang bagus.
bRemove = ttk.Button(win, text=’Remove’, command=remove)

Jangan lupa untuk import tkMessageBox. dengan menempatkan import tkinter.messagebox as tkMessageBox pada import module dibagian atas. Untuk tambahan pencarian data pada big data bisa buat fungsi search dengan sql yang benar. Ini juga masih sangat bisa dikembangkan dengan scrool di Treeview. Bila berhsil maka kurang lebih tampilan applikasi anda akan seperti ini.

Note: Pada koneksi database yang lain tinggal modif variabel conn pada fungsi database yang sudah ada. Bila tidakmuncul tombonya jangan lupa buat grid pada tiap-tiap tombolnya.

.: GOOD LUCK :.

Memanipulasi Database pada Tkinter Python part2



Ini merupakan lanjutan tutorial yang sebelumnya. Disini kita memodifikasi file yang sudah kita buat. Dengan menambahkan Treeview untuk melihat data yang sudah kita simpan. Tetapi sebelumnya mari kita rapihkan kode yang sudah kita buat agar mudah mengembangkannya.
#import modules
import tkinter as tk
import sqlite3
from tkinter import ttk
win = tk.Tk()
win.title(‘CRUD Tkinter’)
#buat fungsi-fungsi
def database():
global conn, cursor
conn = sqlite3.connect(‘testDB.db’)
cursor = conn.cursor()
cursor.execute(“CREATE TABLE IF NOT EXISTS ‘COMPANY'(ID integer primary key autoincrement not null,NAME text not null, AGE int not null , ADDRESS char(50), SALARY real);”)
def entry():
database()
conn.execute(“INSERT INTO COMPANY ( NAME, AGE, ADDRESS, SALARY) values (?,?,?,? )”, (name.get(),age.get(),address.get(),salary.get(),));
conn.commit()
sta.configure(text = ‘Status :Entry data success!’)
sta.configure(foreground = ‘green’)
clear()
def clear():
name.set(”)
age.set(0)
address.set(”)
salary.set(0)
#buat variabel-variabel
name = tk.StringVar()
age = tk.IntVar()
address = tk.StringVar()
salary = tk.IntVar()
#menginisiasi komponen-komponen
labTittle = ttk.Label(win, font=(16), foreground=’#0000FF’, text=’Add An employee’)
labNama = ttk.Label(win, text=’Name ‘)
labAge = ttk.Label(win, text=’Age ‘)
labAddress = ttk.Label(win, text=’Address’)
labSalary = ttk.Label(win, text=’Salary’)
sta = ttk.Label(win, text=’Status :’)
#colom-colom
colName = ttk.Entry(win, textvariable=name)
colAge = ttk.Entry(win, textvariable=age)
colAddress = ttk.Entry(win, textvariable=address)
colSalary = ttk.Entry(win, textvariable=salary)
#Tombol tombol
bAdd = ttk.Button(win, text=’Add’, command=entry)
bReset = ttk.Button(win, text=’Reset’, command=clear)
#menempatkan komponen-komponen
labTittle.grid(column=1,sticky=tk.W+tk.E)
labNama.grid(column=0,row=1)
labAge.grid(column=0,row=2)
labAddress.grid(column=0,row=3)
labSalary.grid(column=0,row=4)
sta.grid(column=1,row=5,sticky=tk.W+tk.E)
colName.grid(column=1, row=1)
colAge.grid(column=1, row=2)
colAddress.grid(column=1, row=3)
colSalary.grid(column=1, row=4)
bAdd.grid(column=0, row=6,sticky=tk.W+tk.E)
bReset.grid(column=1, row=6,sticky=tk.W+tk.E)
#menjalankan applikasi
win.mainloop()
Selanjutnya mari kita tambahkan Treeview diatas kode win.mainloop().
#menambahkan Treeview
tree = ttk.Treeview(win,columns=(“ID”, “NAME”, “AGE”, “ADDRESS”, “SALARY”), selectmode=”extended”, height=500)
tree.heading(‘ID’, text=”ID”, anchor=W)
tree.heading(‘NAME’, text=”NAME”, anchor=W)
tree.heading(‘AGE’, text=”AGE”, anchor=W)
tree.heading(‘ADDRESS’, text=”ADDRESS”, anchor=W)
tree.heading(‘SALARY’, text=”SALARY”, anchor=W)
tree.column(‘#0’, stretch=NO, minwidth=0, width=0)
tree.column(‘#1’, stretch=NO, minwidth=0, width=40)
tree.column(‘#2’, stretch=NO, minwidth=0, width=120)
tree.column(‘#3’, stretch=NO, minwidth=0, width=40)
tree.column(‘#4’, stretch=NO, minwidth=0, width=120)
tree.grid(column=0,columnspan=3,row=7)
Kemudian kita buat fungsi read untuk membaca datanya.
def read():
tree.delete(*tree.get_children())
database()
cursor.execute(“SELECT * FROM `COMPANY` ORDER BY `NAME` ASC”)
fetch = cursor.fetchall()
for data in fetch:
tree.insert(”, ‘end’, values=(data[0], data[1], data[2], data[3], data[4]))
cursor.close()
conn.close()
sta.config(text=”Successfully read the data from database”, foreground=”black”)
Kemudian eksekusi fungsi read saat program dimulai dengan menambahkan kode read() sebelum win.mainloop(). Lihatlah maka akan muncul data yang sudah kita masukan. Dan masukan kode read() juga pada akhir baris fungsi entry agar langsung merefresh setelah data ditambahkan.
.:GOOD LUCK:.

Minggu, 25 November 2018

Memanipulasi Database pada Tkinter Python


Pada artikel ini, saya membuat file yang bisa memanipulasi database yang bisa menambahkan menambahkan menampilkan, mensunting, mencari dan menghapus data. Sehingga ini cukup powerfull untuk membuat applikasi sekala besar yang berbasis dekstop pada python.
Bahan yang diperlukan untuk membuatnya:
  • Python3
  • Tkinter(module python)
  • Sqlite3
  • Text Editor (geany)
  • Console / Command prompt / Terminal
Untuk penginstalan modul Tkinter tyani dengan masuk ke Python3 dan ketikan perintah import tkinter. Untuk mengetahui bahwa module Tkinter sudah termuat ketik perintah python3 -m tkinter, bila berhasil akan muncul jendela tkinter seperti gambar dibawah ini.

Oke. Pada tahap selanjutnya kita buat file tkinterAdd.py. Ini kode dari file tkinterAdd.py :
import tkinter as tk
import sqlite3
from tkinter import ttk
win = tk.Tk()
win.title(‘Inserting Data with GUI Python’)
def database():
global conn, cursor
conn = sqlite3.connect(‘testDB.db’)
cursor = conn.cursor()
cursor.execute(“CREATE TABLE IF NOT EXISTS ‘COMPANY'(ID integer primary key autoincrement not null,NAME text not null, AGE int not null , ADDRESS char(50), SALARY real);”)
def entry():
database()
conn.execute(“INSERT INTO COMPANY ( NAME, AGE, ADDRESS, SALARY) values (?,?,?,? )”, (name.get(),age.get(),address.get(),salary.get(),));
conn.commit()
sta.configure(text = ‘Status :Entry data success!’)
sta.configure(foreground = ‘green’)
clear()
def clear():
name.set(”)
age.set(”)
address.set(”)
salary.set(”)
name = tk.StringVar()
age = tk.IntVar()
address = tk.StringVar()
salary = tk.IntVar()
ttk.Label(win, font=(16), foreground=’#0000FF’, text=’Add An employee’).grid(column=1,sticky=tk.W+tk.E)
ttk.Label(win, text=’Name ‘).grid(column=0,row=1)
ttk.Entry(win, textvariable=name).grid(column=1, row=1)
ttk.Label(win, text=’Age ‘).grid(column=0,row=2)
ttk.Entry(win, textvariable=age).grid(column=1, row=2)
ttk.Label(win, text=’Address’).grid(column=0,row=3)
ttk.Entry(win, textvariable=address).grid(column=1, row=3)
ttk.Label(win, text=’Salary’).grid(column=0,row=4)
ttk.Entry(win, textvariable=salary).grid(column=1, row=4)
sta=ttk.Label(win, text=’Status :’)
sta.grid(column=1,row=5,sticky=tk.W+tk.E)
ttk.Button(win, text=’Add’, command=entry).grid(column=0, row=6,sticky=tk.W+tk.E)
ttk.Button(win, text=’Reset’, command=clear).grid(column=1, row=6,sticky=tk.W+tk.E)
win.mainloop()
Nah bila berhasil maka kita akan menampilkan jendela Inserting Data with GUI Python seperti gabar dibawah ini.

Isi data pegawai lalu tekan tombol add untuk menambahkannya pada database testDB.db. Untuk melihat data yang sudah terinput kita bisa melihatnya dengan sqlite3 dengan mengetik sqlite3 testDB.db pada console. kemudian ketik select * from COMPANY; Maka akan muncul data yang sudah kita input.
Bila belum memasang sqlite3 pada komputer kita maka pasanglah silahkan lihat website resmi sqlite untuk menginstallny dengan benar. Pada saat menuliskan tutorial ini penulis menggunakan linux. Pada linux installah dengan perintah sudo apt-get install sqlite3.
Note : Untuk pengguna database selain sqlite3 tinggal mengganti variabel conn.
.:: GOOD LUCK ::.