· 5 years ago · Jul 17, 2020, 03:40 AM
1import sqlite3
2from tkinter import messagebox
3from tkinter import *
4
5# Databases
6# Connecting to sqlite
7koneksi = sqlite3.connect("contacts.db")
8
9# Create cursor
10c = koneksi.cursor()
11
12# Create table if not exists
13c.execute("""CREATE TABLE IF NOT EXISTS data_contacts (
14 nomor_list INTEGER PRIMARY KEY,
15 nomor TEXT,
16 nama_kontak TEXT
17 )""")
18
19# Create function simpan
20def simpan():
21 no_list = nomor_list.get()
22 # Connecting to database
23 koneksi = sqlite3.connect("contacts.db")
24 # Create cursor
25 c = koneksi.cursor()
26 # Cek jika no list tidak boleh ganda(not use 2x)
27 c.execute("SELECT * FROM data_contacts")
28 alright = 0
29 for row in c.fetchall():
30 if int(row[0]) == int(no_list):
31 alright = 1
32
33 if alright == 0:
34 # Get data input
35 nama_lengkap = nama_kontak.get()
36 nmr_hp = nomor_hp.get()
37 # Insert into table data_contacts
38 c.execute("INSERT INTO data_contacts VALUES (:nomor_list, :nomor, :nama_kontak)",
39 {
40 'nomor_list': no_list,
41 'nomor': nmr_hp,
42 'nama_kontak': nama_lengkap
43 })
44 # Commit changes
45 koneksi.commit()
46 # Close connection
47 koneksi.close()
48
49 elif alright == 1:
50 messagebox.showwarning('Informasi', 'No. List Sudah Digunakan')
51
52 # Clear Entry Box input
53 nama_kontak.delete(0, END);nomor_list.delete(0, END)
54 nomor_hp.delete(0, END)
55
56# Create function hapus
57def hapus():
58 global option_delete
59 option_delete = Tk();option_delete.title("Hapus Kontak")
60 option_delete.geometry('600x150')
61
62 def accept():
63 # Connecting to database
64 koneksi = sqlite3.connect("contacts.db")
65 # Create Cursor
66 c = koneksi.cursor()
67 # Delete a record
68 c.execute("DELETE FROM data_contacts WHERE oid = " + delete_box.get())
69 # Clear Entry Box input
70 delete_box.delete(0, END)
71 daftar_isi.delete(END)
72 # Commit changes and close connection
73 koneksi.commit()
74 koneksi.close()
75
76 def accept_all():
77 answer = messagebox.askquestion("Hapus Semua Kontak", "Anda yakin Hapus semua kontak?")
78 if answer == 'yes':
79 # Connecting to database
80 koneksi = sqlite3.connect("contacts.db")
81 # Create Cursor
82 c = koneksi.cursor()
83 # Delete Table
84 c.execute("DROP TABLE IF EXISTS data_contacts;")
85 # Create table if not exists
86 c.execute("""CREATE TABLE IF NOT EXISTS data_contacts (
87 nomor_list INTEGER PRIMARY KEY,
88 nomor TEXT,
89 nama_kontak TEXT
90 )""")
91 # Commit changes and close connection
92 koneksi.commit()
93 koneksi.close()
94
95 # Create Text box
96 delete_box = Entry(option_delete, width=15)
97 delete_box.grid(row=3, column=1, pady=5)
98 # Create a label delete
99 lbl_delete = Label(option_delete, text="Masukan No. List : ")
100 lbl_delete.grid(row=3, column=0, pady=5)
101 # Create button accept
102 btn_accept = Button(option_delete, text="Hapus ID", command=accept)
103 btn_accept.grid(row=4, column=0, columnspan=1, pady=11, padx=11, ipadx=27)
104 btn_accept2 = Button(option_delete, text="Hapus Semua", command=accept_all)
105 btn_accept2.grid(row=4, column=1, columnspan=1, ipadx=15)
106 #Main Loop
107 option_delete.mainloop()
108
109# create function tampilkan
110def tampilkan():
111 # Connecting to database
112 koneksi = sqlite3.connect("contacts.db")
113 # Create Cursor
114 c = koneksi.cursor()
115 # Result data table in database
116 c.execute("SELECT *, oid FROM data_contacts")
117 data = c.fetchall()
118 # Looping
119 tampilkan_kontak = ""
120 for kolom in data:
121 #Result
122 tampilkan_kontak += f"No.{kolom[0]} Nama : {str(kolom[2])} \n Nomor : {kolom[1]} \n\n"
123
124 #View in listbox
125 daftar_isi.insert(END,tampilkan_kontak)
126
127def keluar():
128 quit()
129
130# create window home Tkinter
131home = Tk();home.title("Contacts")
132
133# Create frame input
134frm_input = Frame(home, relief=RIDGE, borderwidth=3)
135frm_input.grid(row=0, column=0, padx=10, ipadx=17)
136
137# Create label input
138lbl_no_list = Label(frm_input, text="No. List\t\t:")
139lbl_no_list.grid(row=0, column=0, columnspan=1, padx=10)
140lbl_nama = Label(frm_input, text="Nama\t\t:")
141lbl_nama.grid(row=1, column=0, columnspan=1)
142lbl_nomor = Label(frm_input, text="Nomor Kontak\t:")
143lbl_nomor.grid(row=2, column=0, columnspan=1)
144
145# Create entry box of input data
146nomor_list = Entry(frm_input, width=15)
147nomor_list.grid(row=0, column=1, columnspan=2,padx=20, pady=(10,0))
148nama_kontak = Entry(frm_input, width=15)
149nama_kontak.grid(row=1, column=1, columnspan=2)
150nomor_hp = Entry(frm_input, width=15)
151nomor_hp.grid(row=2, column=1, columnspan=2)
152
153# Create View List
154# Frame
155frm_daftar_isi = Frame(home, relief=RIDGE, borderwidth=3)
156frm_daftar_isi.grid(row=3, column=0, pady=10, ipadx=10)
157# ScrollBar
158scroll = Scrollbar(frm_daftar_isi)
159scroll.grid(row=3, column=1, columnspan=1, ipady=50)
160# List Box
161daftar_isi = Text(frm_daftar_isi, width=35, height=7, yscrollcommand=scroll.set)
162daftar_isi.grid(row=3, column=0, ipadx=20)
163scroll.config(command=daftar_isi.yview)
164
165#Frame Button
166frm_btn = Frame(home, relief=RIDGE, borderwidth=3)
167frm_btn.grid(row=4, column=0, ipadx=15, ipady=15, pady=(10,0))
168# Create Button
169btn_simpan= Button(frm_btn, text='Simpan Kontak', command=simpan)
170btn_simpan.grid(row=4, column=0, columnspan=1, padx=(10,0), pady=10, ipadx=13)
171btn_tampilkan = Button(frm_btn, text="Daftar Kontak\n Tersimpan", command=tampilkan)
172btn_tampilkan.grid(row=4, column=1, pady=9, padx=(10,0), ipadx=12, ipady=2)
173btn_hapus = Button(frm_btn, text='Hapus Kontak', command=hapus)
174btn_hapus.grid(row=5, column=0, columnspan=1, ipadx=15)
175btn_keluar = Button(frm_btn, text='Keluar', command=keluar)
176btn_keluar.grid(row=5, column=1, columnspan=1, padx=(10,0), ipadx=35)
177
178# Commit changes
179koneksi.commit()
180# Close Connection
181koneksi.close()
182# Main Loop
183home.mainloop()