· 2 years ago · May 22, 2023, 02:50 PM
1import tkinter
2from tkinter import *
3from tkinter import messagebox
4import sqlite3
5import ttkbootstrap as ttk
6
7register_window = tkinter.Tk()
8register_window.title("Health Registration Form")
9register_window.resizable(False, False)
10register_window.minsize(width=500, height=300)
11
12#Database
13
14class Mainframe:
15
16 def __init__(self, frame):
17
18 frame = tkinter.Frame(register_window)
19 frame.pack()
20
21 self.user_info_frame = ttk.LabelFrame(frame, text="Resident Information")
22 self.user_info_frame.grid(row= 0, column= 0, sticky="news", padx=10, pady=5)
23
24 self.first_name_label = tkinter.Label(self.user_info_frame, text="First Name")
25 self.first_name_label.grid(row=0, column=0)
26 self.last_name_label = tkinter.Label(self.user_info_frame, text="Last Name")
27 self.last_name_label.grid(row=0, column=1)
28
29 self.first_name_entry = ttk.Entry(self.user_info_frame, bootstyle="dark")
30 self.last_name_entry = ttk.Entry(self.user_info_frame, bootstyle="dark")
31 self.first_name_entry.grid(row=1, column=0)
32 self.last_name_entry.grid(row=1, column=1)
33
34 self.gender_label = tkinter.Label(self.user_info_frame, text="Gender")
35 self.gender_label.grid(row=0, column=2)
36
37 self.gender_var = tkinter.StringVar(value="Undefined")
38 self.gender_radio_button = ttk.Radiobutton(self.user_info_frame, text = "Male", value = "Male", variable=self.gender_var, bootstyle="dark").grid(row=1, column=2)
39 self.gender_radio_button2 = ttk.Radiobutton(self.user_info_frame, text="Female", value = "Female", variable=self.gender_var, bootstyle="dark").grid(row=1, column=3)
40
41 self.age_label = tkinter.Label(self.user_info_frame, text="Age")
42 self.age_entry = ttk.Spinbox(self.user_info_frame, bootstyle="dark", from_=1, to=100, width=16)
43 self.age_label.grid(row=2, column=0)
44 self.age_entry.grid(row=3, column=0, sticky="we")
45
46 self.contact_number_label = tkinter.Label(self.user_info_frame, text="Contact Number")
47 self.contact_number_entry = ttk.Entry(self.user_info_frame, bootstyle="dark")
48 self.contact_number_label.grid(row=2 , column= 1)
49 self.contact_number_entry.grid(row=3, column= 1, sticky="news")
50
51 for widget in self.user_info_frame.winfo_children():
52 widget.grid_configure(padx=10, pady=5)
53
54 #Address
55 self.address_frame = ttk.LabelFrame(frame, text="Address")
56 self.address_frame.grid(row=1, column=0, sticky="news", padx=10, pady=5)
57
58 self.address_label = tkinter.Label(self.address_frame, text="Street, Building, House No.")
59 self.address_entry = ttk.Entry(self.address_frame, width=46, bootstyle="dark")
60 self.address_label.grid(row=0, column=0)
61 self.address_entry.grid(row=1, column=0, pady=5)
62
63 self.district_label = tkinter.Label(self.address_frame, text="Municipality / District")
64 self.district_entry = ttk.Combobox(self.address_frame, values=["Barangay Uno", "Barangay Dos", "Barangay Tres", "Barangay Quatro"], width=30, bootstyle="dark", state="readonly")
65 self.district_label.grid(row=0, column=1)
66 self.district_entry.grid(row=1, column=1, pady=5)
67
68 for widget in self.address_frame.winfo_children():
69 widget.grid_configure(padx=10, pady=5)
70
71 #Terms and Conditions
72 self.tnc_frame = ttk.LabelFrame(frame, text="Terms and Conditions")
73 self.tnc_frame.grid(row=2, column=0, sticky="news", padx=10, pady=5)
74
75 self.accept_tnc_var = tkinter.StringVar(value="Disagree")
76 self.tnc_checkbox = ttk.Checkbutton(self.tnc_frame, text="By checking this button, you agree to our User Terms and Conditions",
77 variable=self.accept_tnc_var, bootstyle="dark", onvalue="Agree", offvalue="Disagree")
78 self.tnc_checkbox.grid(row=0,column=0, padx=5, pady=5)
79
80 #Register Button
81 self.button = ttk.Button(frame, text="Register", bootstyle="dark", command=lambda: [self.register_data(), self.fill_up_data()])
82 self.button.grid(row=3, column=0, sticky="news", padx=10, pady=5)
83
84 def fill_up_data(self):
85 agree = self.accept_tnc_var.get()
86 firstname = self.first_name_entry.get()
87 lastname = self.last_name_entry.get()
88 age = self.age_entry.get()
89 contact_number = self.contact_number_entry.get()
90 address = self.address_entry.get()
91 district = self.district_entry.get()
92 gender = self.gender_var.get()
93
94 if agree == "Agree" and firstname and lastname and age and address and district and gender!="Undefined":
95
96 if contact_number.isdigit():
97 import form2
98 self.register_window.destroy()
99 else:
100 tkinter.messagebox.showwarning(title= "Error", message= "Invalid Contact Number. Please Try Again")
101 else:
102 tkinter.messagebox.showwarning(title= "Error", message= "Missing Information Required")
103
104 def register_data(self):
105 agree = self.accept_tnc_var.get()
106 count = 0
107
108 if agree == "Agree":
109 firstname = self.first_name_entry.get()
110 lastname = self.last_name_entry.get()
111 age = self.age_entry.get()
112 contact_number = self.contact_number_entry.get()
113 address = self.address_entry.get()
114 district = self.district_entry.get()
115 gender = self.gender_var.get()
116
117 if firstname and lastname and age and contact_number.isdigit() and address and district and gender!="Undefined":
118 print("User Information Successfully Registered")
119 #Database Table
120 conn = sqlite3.connect('userDatabase.db')
121 table_create_query = '''CREATE TABLE IF NOT EXISTS Resident_Data
122 (firstname TEXT, lastname TEXT, age INT, gender TEXT, contact_number INT, address TEXT, district TEXT)
123 '''
124 conn.execute(table_create_query)
125 #Input Data
126 data_input_query = '''INSERT INTO Resident_Data (firstname, lastname, age, gender, contact_number, address, district) VALUES
127 (?, ?, ?, ?, ?, ?, ?)'''
128 data_input_tuple = (firstname, lastname, age, gender, contact_number, address, district)
129 cursor = conn.cursor()
130 cursor.execute(data_input_query, data_input_tuple)
131 conn.commit()
132 conn.close()
133
134 else:
135 pass
136
137 else:
138 tkinter.messagebox.showwarning(title= "Error", message= "You have not agreed to our the Terms and Conditions.")
139
140e = Mainframe(register_window)
141
142register_window.mainloop()