initial gui
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
from .main import MainApplication
|
||||
app = MainApplication()
|
||||
@@ -0,0 +1,32 @@
|
||||
import tkinter as tk
|
||||
from app.views.login import LoginView
|
||||
from app.views.initial import InitialView
|
||||
from app.views.signup import SignupView
|
||||
|
||||
|
||||
class MainApplication(tk.Tk):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self.title("Messenger App")
|
||||
|
||||
screen_height = self.winfo_screenheight()
|
||||
self.geometry(f"{screen_height // 2}x{screen_height // 2}")
|
||||
|
||||
# Create instances of the views
|
||||
self.login_view = LoginView(self)
|
||||
self.initial_view = InitialView(self)
|
||||
self.signup_view = SignupView(self)
|
||||
self.main_view = tk.Label(self, text="Main View")
|
||||
|
||||
self.current_view = None
|
||||
self.change_view(self.initial_view)
|
||||
|
||||
def change_view(self, view: tk.Frame):
|
||||
if self.current_view:
|
||||
self.current_view.pack_forget()
|
||||
|
||||
self.current_view = view
|
||||
self.current_view.pack(expand=True, fill=tk.BOTH)
|
||||
self.current_view.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import tkinter as tk
|
||||
|
||||
|
||||
class InitialView(tk.Frame):
|
||||
def __init__(self, master=None):
|
||||
super().__init__(master)
|
||||
self.create_widgets()
|
||||
|
||||
def create_widgets(self):
|
||||
# Login Button
|
||||
login_button = tk.Button(self, text="Login", command=self.on_login)
|
||||
login_button.pack(side=tk.LEFT, padx=5)
|
||||
|
||||
# Sign In Button
|
||||
signin_button = tk.Button(self, text="Sign In", command=self.on_signin)
|
||||
signin_button.pack(side=tk.RIGHT, padx=5)
|
||||
|
||||
def on_login(self):
|
||||
self.master.change_view(self.master.login_view)
|
||||
|
||||
def on_signin(self):
|
||||
self.master.change_view(self.master.signup_view)
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import tkinter as tk
|
||||
|
||||
|
||||
|
||||
class LoginView(tk.Frame):
|
||||
def __init__(self, master=None):
|
||||
super().__init__(master)
|
||||
self.create_widgets()
|
||||
|
||||
def create_widgets(self):
|
||||
# Username Label and Entry
|
||||
username_label = tk.Label(self, text="Username:")
|
||||
username_label.pack(pady=5)
|
||||
self.username_entry = tk.Entry(self)
|
||||
self.username_entry.pack(pady=5)
|
||||
|
||||
# Password Label and Entry
|
||||
password_label = tk.Label(self, text="Password:")
|
||||
password_label.pack(pady=5)
|
||||
self.password_entry = tk.Entry(self, show="*") # Use show="*" to hide password characters
|
||||
self.password_entry.pack(pady=5)
|
||||
|
||||
# Login Button
|
||||
login_button = tk.Button(self, text="Submit", command=self.on_login)
|
||||
login_button.pack(pady=10)
|
||||
|
||||
def on_login(self):
|
||||
# Retrieve username and password values
|
||||
username = self.username_entry.get()
|
||||
password = self.password_entry.get()
|
||||
|
||||
# Example: Check credentials (you'll need to implement your own logic)
|
||||
if username == "example" and password == "password":
|
||||
self.master.show_main_view()
|
||||
else:
|
||||
print("Invalid credentials")
|
||||
@@ -0,0 +1,78 @@
|
||||
import tkinter
|
||||
import tkinter as tk
|
||||
import re
|
||||
|
||||
class SignupView(tk.Frame):
|
||||
def __init__(self, master=None):
|
||||
super().__init__(master)
|
||||
self.create_widgets()
|
||||
|
||||
def create_widgets(self):
|
||||
# Create a frame to hold the entry fields and labels
|
||||
form_frame = tk.Frame(self)
|
||||
|
||||
# Username Label and Entry
|
||||
self.username_label = tk.Label(form_frame, text="Username:")
|
||||
self.username_label.grid(row=0, column=0, pady=5)
|
||||
self.username_entry = tk.Entry(form_frame)
|
||||
self.username_entry.grid(row=0, column=1, pady=5)
|
||||
self.username_error_var = tk.StringVar() # Variable to store error message
|
||||
self.username_error_label = tk.Label(form_frame, textvariable=self.username_error_var, fg="red")
|
||||
|
||||
# Email Label and Entry
|
||||
self.email_label = tk.Label(form_frame, text="Email:")
|
||||
self.email_label.grid(row=1, column=0, pady=5)
|
||||
self.email_entry = tk.Entry(form_frame)
|
||||
self.email_entry.grid(row=1, column=1, pady=5)
|
||||
self.email_error_var = tk.StringVar() # Variable to store error message
|
||||
self.email_error_label = tk.Label(form_frame, textvariable=self.email_error_var, fg="red")
|
||||
|
||||
# Password Label and Entry
|
||||
self.password_label = tk.Label(form_frame, text="Password:")
|
||||
self.password_label.grid(row=2, column=0, pady=5)
|
||||
self.password_entry = tk.Entry(form_frame, show="*") # Use show="*" to hide password characters
|
||||
self.password_entry.grid(row=2, column=1, pady=5)
|
||||
self.password_error_var = tk.StringVar() # Variable to store error message
|
||||
self.password_error_label = tk.Label(form_frame, textvariable=self.password_error_var, fg="red")
|
||||
|
||||
# Signup Button
|
||||
self.signup_button = tk.Button(form_frame, text="Signup", command=self.on_signup)
|
||||
self.signup_button.grid(row=3, column=1, pady=10)
|
||||
self.clear_errors()
|
||||
|
||||
form_frame.pack()
|
||||
def on_signup(self):
|
||||
self.clear_errors()
|
||||
|
||||
# Retrieve values from entry fields
|
||||
username = self.username_entry.get()
|
||||
email = self.email_entry.get()
|
||||
password = self.password_entry.get()
|
||||
|
||||
# Validate username length
|
||||
if len(username) < 8:
|
||||
self.username_error_var.set("Username must be at least 8 characters.")
|
||||
self.username_error_label.grid(row=0, column=3, pady=5, sticky='w')
|
||||
|
||||
# Validate email format using a simple regex
|
||||
email_pattern = re.compile(r"[^@]+@[^@]+\.[^@]+")
|
||||
if not email_pattern.match(email):
|
||||
self.email_error_var.set("Invalid email format.")
|
||||
self.email_error_label.grid(row=1, column=3, pady=5, sticky='w')
|
||||
|
||||
# Validate password length and presence of numbers
|
||||
if len(password) < 8:
|
||||
self.password_error_var.set("Password must be at least 8 characters")
|
||||
self.password_error_label.grid(row=2, column=3, pady=5, sticky='w')
|
||||
|
||||
# Print or handle the values as needed
|
||||
print(f"Username: {username}, Email: {email}, Password: {password}")
|
||||
|
||||
def clear_errors(self):
|
||||
# Clear all error messages
|
||||
self.username_error_var.set("")
|
||||
self.username_error_label.grid_forget()
|
||||
self.email_error_var.set("")
|
||||
self.email_error_label.grid_forget()
|
||||
self.password_error_var.set("")
|
||||
self.password_error_label.grid_forget()
|
||||
Reference in New Issue
Block a user