From dffa6274d3eaa43d4a203602233b0d4fc15713eb Mon Sep 17 00:00:00 2001 From: Lucas Mathews Date: Sat, 25 May 2024 18:57:05 +0200 Subject: [PATCH] start customTKinter frontend --- application/app.ini | 0 application/config.py | 7 +++++++ application/connection.py | 8 ++++++++ application/login.py | 28 ++++++++++++++++++++++++++++ application/luxbank.ico | Bin 0 -> 106437 bytes 5 files changed, 43 insertions(+) create mode 100644 application/app.ini create mode 100644 application/config.py create mode 100644 application/connection.py create mode 100644 application/login.py create mode 100644 application/luxbank.ico diff --git a/application/app.ini b/application/app.ini new file mode 100644 index 0000000..e69de29 diff --git a/application/config.py b/application/config.py new file mode 100644 index 0000000..31cc96a --- /dev/null +++ b/application/config.py @@ -0,0 +1,7 @@ +# Lucas Mathews - Fontys Student ID: 5023572 +# Banking System Config Parser + +import configparser + +CONFIG = configparser.ConfigParser() +CONFIG.read("application/app.ini") diff --git a/application/connection.py b/application/connection.py new file mode 100644 index 0000000..db1afbf --- /dev/null +++ b/application/connection.py @@ -0,0 +1,8 @@ +# Lucas Mathews - Fontys Student ID: 5023572 +# Banking System App Connection file + +import requests +from config import CONFIG + +def get_connection(): + return requests.get(CONFIG["api"]["url"]) # Returns the connection to the API \ No newline at end of file diff --git a/application/login.py b/application/login.py new file mode 100644 index 0000000..3e07133 --- /dev/null +++ b/application/login.py @@ -0,0 +1,28 @@ +# Lucas Mathews - Fontys Student ID: 5023572 +# Banking System App Login Page + +from tkinter import * +import customtkinter + + +customtkinter.set_appearance_mode("System") # Modes: system (default), light, dark +customtkinter.set_default_color_theme("dark-blue") # Themes: blue (default), dark-blue, green + +root = customtkinter.CTk() + +root.title("Luxbank Login") +root.iconbitmap("application/luxbank.ico") +root.geometry("400x300") + +label = customtkinter.CTkLabel(root, text="Luxbank", font=("Helvetica", 24)) +label.pack(pady=20) + +username = customtkinter.CTkEntry(root, placeholder_text="Client ID") +username.pack(pady=20) +password = customtkinter.CTkEntry(root, placeholder_text="Password", show="*") +password.pack(pady=10) + +login_button= customtkinter.CTkButton(root, text="Login", command=lambda: print("Login")) +login_button.pack(pady=15) + +root.mainloop() \ No newline at end of file diff --git a/application/luxbank.ico b/application/luxbank.ico new file mode 100644 index 0000000000000000000000000000000000000000..3dfc5c89105a778cfe80896597293ed728f61998 GIT binary patch literal 106437 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 J7#@t9{vUrj5pVzi literal 0 HcmV?d00001