· 5 years ago · Jun 02, 2020, 08:34 AM
1from urllib.request import urlopen
2from tkinter import *
3from random import uniform
4import json
5import sqlite3
6
7# Create window home Tkinter
8home = Tk()
9home.title("Aplikasi Data Tanaman");home.geometry("600x250")
10
11# Databases
12# create a database or connect to one
13conn = sqlite3.connect("kebun.db")
14
15# Create cursor
16kursor = conn.cursor()
17
18# Create table data_pohon
19kursor.execute("""CREATE TABLE IF NOT EXISTS data_pohon (
20 id_tree INTEGER PRIMARY KEY,
21 sensor_tree INTEGER,
22 loc_lat REAL,
23 loc_lon REAL)""")
24
25# Create tabel sensor_pohon if not exists
26kursor.execute("""CREATE TABLE IF NOT EXISTS data_sensor(
27 id_tree INTEGER PRIMARY KEY,
28 sensor_0 INTEGER,
29 sensor_1 INTEGER,
30 sensor_2 INTEGER,
31 sensor_3 INTEGER,
32 sensor_4 INTEGER,
33 sensor_5 INTEGER,
34 sensor_6 INTEGER,
35 sensor_7 INTEGER,
36 sensor_8 INTEGER,
37 sensor_9 INTEGER
38 )""")
39
40# Create submit function for database
41def get_loc():
42 # Search Random location Latitude & Longitude
43 for i in range(100):
44 loc_lat = uniform(1, 20)
45 for j in range(100):
46 loc_lon = uniform(1, 360)
47
48 # create a database or connect to one
49 conn = sqlite3.connect("kebun.db")
50 # Create cursor
51 kursor = conn.cursor()
52 # Insert Into Table data_pohon
53 kursor.execute("INSERT INTO data_pohon VALUES (:id_tree, :sensor_tree, :loc_lat, :loc_lon)",
54 {
55 'id_tree': id_tree.get(), 'sensor_tree': sensor_tree.get(),
56 'loc_lat': loc_lat,
57 'loc_lon': loc_lon
58 })
59
60 # Commit changes
61 conn.commit()
62 # Close connection
63 conn.close()
64
65 # Clear The Text Boxes
66 id_tree.delete(0, END)
67 sensor_tree.delete(0, END)
68
69# Create Function to Sensor Tree
70def option_sensor():
71 global option_sensor
72 option_sensor = Tk()
73 option_sensor.title("Sensor Tanaman")
74 option_sensor.geometry("700x400")
75
76 # Create Text Boxes
77 get_data_id = Entry(option_sensor, width=30)
78 get_data_id.grid(row=1, column=1, pady=5)
79
80 # Create a Label Text
81 id_tree_lbl = Label(option_sensor, text="ID Tanaman : ")
82 id_tree_lbl.grid(row=1, column=0, pady=5)
83
84 # Create a Button
85 add_sensor_btn = Button(option_sensor, text="Tambahkan Data Sensor", command=ambil_data)
86 add_sensor_btn.grid(row=3, column=1, columnspan=1, pady=11, padx=11, ipadx=7)
87 result_sensor_btn = Button(option_sensor, text="Tampilkan Data Sensor", command=tampilkan_data_sensor)
88 result_sensor_btn.grid(row=4, column=1, columnspan=1, ipadx=7)
89
90 # Main Loop
91 option_sensor.mainloop()
92
93# Create Function to Delete A Record
94def option_delete():
95 # delete from ID data
96 def delete_1():
97 # create a database or connect to one
98 conn = sqlite3.connect("kebun.db")
99 # Create cursor
100 kursor = conn.cursor()
101 # Delete a record
102 kursor.execute("DELETE FROM data_pohon WHERE oid = " + delete_box.get())
103 kursor.execute("DELETE FROM data_sensor WHERE oid = " + delete_box.get())
104 delete_box.delete(0, END)
105 # Commit changes
106 conn.commit()
107 # Close connection
108 conn.close()
109
110 # Delete a Tabel data_pohon
111 def delete_2():
112 # create a database or connect to one
113 conn = sqlite3.connect("kebun.db")
114 # Create cursor
115 kursor = conn.cursor()
116 # Delete a tabel
117 kursor.execute("DROP TABLE IF EXISTS data_pohon;")
118 # Create table data_pohon
119 kursor.execute("""CREATE TABLE IF NOT EXISTS data_pohon (
120 id_tree INTEGER PRIMARY KEY, sensor_tree INTEGER,
121 loc_lat REAL, loc_lon REAL)""")
122
123 kursor.execute("DROP TABLE IF EXISTS data_sensor;")
124 # Create Tabel sensor_pohon
125 kursor.execute("""CREATE TABLE IF NOT EXISTS data_sensor(
126 id_tree INTEGER PRIMARY KEY,
127 sensor_0 INTEGER,
128 sensor_1 INTEGER,
129 sensor_2 INTEGER,
130 sensor_3 INTEGER,
131 sensor_4 INTEGER,
132 sensor_5 INTEGER,
133 sensor_6 INTEGER,
134 sensor_7 INTEGER,
135 sensor_8 INTEGER,
136 sensor_9 INTEGER
137 )""")
138 # Commit changes
139 conn.commit()
140 # Close connection
141 conn.close()
142
143 global option_delete
144 option_delete = Tk()
145 option_delete.title("Hapus Data")
146 option_delete.geometry('450x200')
147
148 # Create Text Boxes
149 delete_box = Entry(option_delete, width=30)
150 delete_box.grid(row=3, column=1, pady=5)
151 # Create a label delete
152 delete_box_lbl = Label(option_delete, text="Select ID : ")
153 delete_box_lbl.grid(row=3, column=0, pady=5)
154 # Create a Delete Button
155 delete_btn = Button(option_delete, text="Hapus Data ID", command=delete_1)
156 delete_btn.grid(row=4, column=1, columnspan=1, pady=11, padx=11, ipadx=22)
157 # Create a Delete All Button
158 del_all_btn = Button(option_delete, text="Hapus Semua Data", command=delete_2)
159 del_all_btn.grid(row=5, column=1, columnspan=1, ipadx=7)
160
161 # Main loop
162 option_delete.mainloop()
163
164# Create result function
165def result():
166 option_result = Tk()
167 option_result.title("Tampilkan Data")
168 option_result.geometry("600x300")
169
170 def print():
171 # create a database or connect to one
172 conn = sqlite3.connect("kebun.db")
173 # Create cursor
174 kursor = conn.cursor()
175 # Result the database
176 kursor.execute("SELECT *, oid FROM data_pohon")
177 records = kursor.fetchall()
178
179 # loop thur Result
180 print_records = ""
181 for record in records:
182 # Print for looping
183 print_records += f"\n id : {record[0]} sensor : {record[1]} Latitude : - {record[2]:1.7f} Longitude : {record[3]:1.7f}"
184
185 # Result in box
186 box_result.insert(END, print_records)
187 # Commit changes
188 conn.commit()
189 # Close connection
190 conn.close()
191
192 # create a database or connect to one
193 conn = sqlite3.connect("kebun.db")
194 # Create cursor
195 kursor = conn.cursor()
196 # Result the database
197 kursor.execute("SELECT *, oid FROM data_pohon")
198 records = kursor.fetchall()
199
200 # loop thur Result
201 print_records = ""
202 for record in records:
203 # Print for looping
204 print_records += f"\n id : {record[0]} sensor : {record[1]} Latitude : - {record[2]:1.7f} Longitude : {record[3]:1.7f}"
205
206 # Result in box
207 result_lbl = Label(option_result, text=print_records)
208 result_lbl.grid(row=2, column=0, rowspan=40, columnspan=2, padx=10, pady=10)
209 # Commit changes
210 conn.commit()
211 # Close connection
212 conn.close()
213
214
215 #Main loop
216 option_result.mainloop()
217
218# Create Text Boxes
219id_tree = Entry(home, width=20)
220id_tree.grid(row=0, column=1, padx=20, pady=(10,0))
221sensor_tree = Entry(home, width=20)
222sensor_tree.grid(row=1, column=1)
223
224# Create Text Box Labels
225id_tree_lbl = Label(home, text="ID Tanaman\t\t: ")
226id_tree_lbl.grid(row=0, column=0, pady=(10,0))
227sensor_tree_lbl = Label(home, text="No. Sensor (0 s/d 9)\t\t: ")
228sensor_tree_lbl.grid(row=1, column=0)
229
230
231# Create information Button
232#info_btn = Button(root, text="Application\ninformation", command=optioninfo_tree)
233#info_btn.grid(row=0, column=2, columnspan=1, ipadx=2)
234
235# Create get_data Button
236get_data_btn = Button(home, text="Tambahkan Data", command=get_loc)
237get_data_btn.grid(row=6, column=0, columnspan=1, pady=10, padx=10, ipadx=42)
238
239# Create Result Button
240result_btn = Button(home, text="Tampilkan Data", command=result)
241result_btn.grid(row=7, column=0, columnspan=1, ipadx=46)
242
243# Create Delete Button
244delete_btn = Button(home, text="Hapus Data", command=option_delete)
245delete_btn.grid(row=8, column=0, columnspan=1, ipadx=60)
246
247# Create an Sensor Button
248sensor_btn = Button(home, text="Sensor Tanaman", command=option_sensor)
249sensor_btn.grid(row=7, column=1, columnspan=2, pady=11, padx=11, ipadx=42)
250
251
252# Commit changes
253conn.commit()
254# Close connection
255conn.close()
256# Main loop
257home.mainloop()