Code: Alles auswählen
import tkinter as tk
import sql_aufrufe
class MainWindow:
def __init__(self, master):
self.db = sql_aufrufe.connect()
self.user_id = ""
self.range_id = ""
self.place_id = ""
self.standaufsicht = "0"
self.caliber_id = ""
self.username = ""
self.range_name = ""
self.titel = tk.StringVar()
self.titel.set("Schießbuch")
self.master = master
self.master.geometry("1200x480")
self.master.title("Schießbuch")
#self.master.attributes('-zoomed', True)
self.frame1 = tk.Frame(self.master)
self.label1 = tk.Label(self.frame1, textvariable = self.titel, font = "Arial 16 bold")
self.label1.pack(padx=5, pady=20)
self.frame1.pack(side=tk.TOP)
self.frame_bottom = tk.Frame(self.master)
self.label1 = tk.Label(self.frame_bottom, text = "Matthias Aßmann", font = "Arial 10")
self.label1.pack(padx=5, pady=20, side=tk.BOTTOM)
self.frame_bottom.pack(side=tk.BOTTOM)
self.show_users()
self.input_user_id()
def run_again(self):
self.label_username.pack_forget()
self.frame_user.pack_forget()
self.frame_show_users.pack_forget()
self.user_id = ""
self.range_id = ""
self.place_id = ""
self.standaufsicht = 0
self.caliber_id = ""
self.username = ""
self.range_name = ""
self.show_users()
self.input_user_id()
def show_users(self):
self.frame_show_users =tk.Frame(self.master)
users = sql_aufrufe.get_users(self.db)
for row in users:
user_label = tk.Label(self.frame_show_users, text= (row["ID"], row["UName"], row["UVorname"]),
fg = "red",
font = "Arial")
user_label.pack(fill=tk.X, pady=10)
self.frame_show_users.pack(side=tk.TOP)
def input_user_id(self):
self.frame_user =tk.Frame(self.master)
label = tk.Label(self.frame_user, text = "Bitte wähle deine ID aus: ", font = "Arial 12 bold")
label.pack(padx=5, pady=20)
self.entry_userid = tk.Entry(self.frame_user)
self.entry_userid.pack(padx=5, pady=20, side=tk.LEFT)
self.entry_userid.focus()
self.button_choice_userid = tk.Button(self.frame_user, text ="OK", command = self.get_user_id_from_button)
self.button_choice_userid.pack(padx=5, pady=20, side=tk.LEFT)
self.frame_user.pack(side=tk.TOP)
def get_user_id_from_button(self):
self.frame_user.pack_forget()
self.frame_show_users.pack_forget()
self.user_id = self.entry_userid.get()
self.entry_userid.delete(0, 'end')
self.show_logged_in_user()
if not sql_aufrufe.is_user_registered(self.db, self.user_id):
self.frame_until_registerd = tk.Frame(self.master)
label = tk.Label(self.frame_until_registerd,
text = "Du bist bereits registriert! \n \n Möchtest du dich abmelden?", font = "Arial 14 bold")
label.pack(padx=5, pady=20, side=tk.LEFT)
self.button_yes_registered = tk.Button(self.frame_until_registerd, text ="Ja", command = lambda:(self.unregister_user(), self.frame_until_registerd.pack_forget()))
self.button_yes_registered.pack(padx=5, pady=20, side=tk.LEFT)
self.button_no_registered = tk.Button(self.frame_until_registerd, text ="Nein", command = lambda:(self.run_again(), self.frame_until_registerd.pack_forget()))
self.button_no_registered.pack(padx=5, pady=20, side=tk.LEFT)
self.frame_until_registerd.pack(side=tk.TOP)
else:
self.show_range(self.db)
self.input_range_id()
def show_logged_in_user(self):
logged_in_user = sql_aufrufe.get_logged_in_user(self.db, self.user_id)
for row in logged_in_user:
self.label_username = tk.Label(self.frame1, text = "Hallo " + row["UVorname"] , font = "Arial 14")
self.label_username.pack(padx=5, pady=10, side = tk.TOP)
def unregister_user(self):
sql_aufrufe.update_user_unregister(self.db, self.user_id)
self.frame_unregister_user = tk.Frame(self.master)
self.label_unregister = tk.Label(self.frame_unregister_user, text = "Du hast dich erfolgreich abgemeldet!" , font = "Arial 14")
self.label_unregister.pack(padx=5, pady=10, side = tk.LEFT)
self.button_ok_unregister = tk.Button(self.frame_unregister_user, text ="OK", command = lambda:(self.run_again(), self.frame_unregister_user.pack_forget()))
self.button_ok_unregister.pack(padx=5, pady=20, side=tk.LEFT)
self.frame_unregister_user.pack()
def show_range(self, db):
self.frame_show_range =tk.Frame(self.master)
range_str = sql_aufrufe.get_range(db)
for row in range_str:
range_label = tk.Label(self.frame_show_range, text= (row["ID"], row["StandLang"]),
fg = "red",
font = "Arial")
range_label.pack(fill=tk.X, pady=10)
self.frame_show_range.pack(side=tk.TOP)
def input_range_id(self):
self.frame_caliber =tk.Frame(self.master)
label = tk.Label(self.frame_caliber, text = "Bitte wähle den Stand aus: ", font = "Arial 12 bold")
label.pack(padx=5, pady=20)
self.entry_rangeid = tk.Entry(self.frame_caliber)
self.entry_rangeid.pack(padx=5, pady=5, side=tk.LEFT)
self.entry_rangeid.focus()
self.button_choice_rangeid = tk.Button(self.frame_caliber, text ="OK", command = self.get_range_id_from_button)
self.button_choice_rangeid.pack(padx=5, pady=5, side=tk.LEFT)
self.frame_caliber.pack(side=tk.TOP)
def get_range_id_from_button(self):
self.frame_show_range.pack_forget()
self.frame_caliber.pack_forget()
self.range_id = self.entry_rangeid.get()
self.entry_rangeid.delete(0, 'end')
if sql_aufrufe.is_everyone_current_standaufsicht(self.db, self.range_id):
self.frame_no_standaufsicht = tk.Frame(self.master)
label = tk.Label(self.frame_no_standaufsicht,
text = "Es gibt aktuell keine Standaufsicht! \n \n Möchtest du Standaufsicht sein?",
font = "Arial 14 bold")
label.pack(padx=5, pady=20, side=tk.LEFT)
self.button_yes_no_standaufsicht = tk.Button(self.frame_no_standaufsicht,
text ="Ja", command = self.user_is_standaufsicht)
self.button_yes_no_standaufsicht.pack(padx=5, pady=20, side=tk.LEFT)
self.button_no_no_standaufsicht = tk.Button(self.frame_no_standaufsicht,
text ="Nein", command = lambda:(self.run_again(), self.frame_no_standaufsicht.pack_forget()))
self.button_no_no_standaufsicht.pack(padx=5, pady=20, side=tk.LEFT)
self.frame_no_standaufsicht.pack(side=tk.TOP)
else:
self.buttons_places()
self.get_range_name()
def get_range_name(self):
range_str = sql_aufrufe.get_range_by_ID(self.db, self.range_id)
for row in range_str:
self.titel.set("Schießbuch - "+ row["StandLang"])
def user_is_standaufsicht(self):
self.frame_no_standaufsicht.pack_forget()
self.standaufsicht = 1
self.buttons_places()
def check_standaufsicht_avalaible(self, db):
self.frame_show_range =tk.Frame(self.master)
range_str = sql_aufrufe.get_range(db)
for row in range_str:
range_label = tk.Label(self.frame_show_range, text= (row["ID"], row["StandLang"]),
fg = "red",
font = "Arial")
range_label.pack(fill=tk.X, pady=10)
self.frame_show_range.pack(side=tk.TOP)
def buttons_places(self):
self.frame_buttons_places = tk.Frame(self.master)
occupied_places = sql_aufrufe.get_occupied_place_numbers(self.db, self.range_id)
max_places= sql_aufrufe.get_max_place_number(self.db, self.range_id)
label = tk.Label(self.frame_buttons_places, text = "Bitte tippe auf den Platz auf dem du schießt: ", font= "Arial 12 bold")
label.pack(padx=10, pady=10)
buttons = []
for place in range(1, max_places+1):
button = tk.Button(self.frame_buttons_places, text = place ,
height = 3, width = 3,
command=lambda button_value=place: self.get_place_from_button(button_value))
if place in occupied_places:
button.config(state=tk.DISABLED)
button.pack(padx=1, pady=3, side=tk.LEFT)
buttons.append(button)
self.frame_buttons_places.pack(side=tk.TOP)
def get_place_from_button(self, place1_id):
self.frame_buttons_places.pack_forget()
self.place_id = place1_id
self.input_show_caliber_buttons()
def input_show_caliber_buttons(self):
self.frame_show_caliber =tk.Frame(self.master)
caliber_str = sql_aufrufe.get_caliber(self.db, self.range_id)
buttons = []
for row in caliber_str:
caliber_button = tk.Button(self.frame_show_caliber, text = row["KaliberLang"] ,
height = 4, width = 20,
command=lambda caliber_value=row["ID"]: self.get_caliber_from_button(caliber_value))
caliber_button.pack(padx=3, pady=3, )
buttons.append(caliber_button)
self.frame_show_caliber.pack(side=tk.TOP)
def get_caliber_from_button(self, caliber1_id):
self.caliber_id = caliber1_id
sql_aufrufe.insert_rifleman(self.db, self.user_id, self.range_id, self.place_id, self.caliber_id, self.standaufsicht)
self.frame_show_caliber.pack_forget()
self.frame_register_user = tk.Frame(self.master)
self.label_unregister = tk.Label(self.frame_register_user, text = "Du hast dich erfolgreich angemeldet!" , font = "Arial 14")
self.label_unregister.pack(padx=5, pady=10, side = tk.LEFT)
self.button_ok_unregister = tk.Button(self.frame_register_user, text ="OK", command = lambda:(self.run_again(), self.frame_register_user.pack_forget()))
self.button_ok_unregister.pack(padx=5, pady=20, side=tk.LEFT)
self.frame_register_user.pack()
def main():
root = tk.Tk()
app = MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()