harold4653
New Coder
Python:
import tkinter as tk
import tkinter.font as tkfont
import sqlite3
try:
con = sqlite3.connect('customer.db')
cur = con.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS customer(
name text Not Null,
email text Primary Key,
password text Not Null
)
''')
con.commit() # Commit the changes to the database
print("Database created successfully")
except Exception as e:
print("Error creating database:", e)
class MusicGenerationApp:
def __init__(self):
self.root = tk.Tk()
self.root.title('Music Generator - Login & Register')
self.root.geometry('500x500')
self.root.resizable(True, True)
self.root.config(background='dark red')
self.font_small = tkfont.Font(family="Arial", size=20)
self.font_medium = tkfont.Font(family="Arial", size=30)
self.font_large = tkfont.Font(family="Arial", size=47, weight='bold')
self.create_widgets()
def quit(self):
self.root.destroy()
def create_widgets(self):
self.canvas = tk.Canvas(self.root, height=800, width=1200, bg="dark red")
self.canvas.pack()
top_frame = tk.Frame(self.root, bd=2, bg='black', relief=tk.SOLID, padx=5, pady=10)
tk.Label(top_frame, text="Login or Register\nto Your Account", bg='black', font=self.font_large, fg='white').grid(padx=3, pady=10)
top_frame.place(x=35, y=25, width=425, height=150)
login_btn = tk.Button(width=20, text='Login', font=self.font_medium, relief=tk.SOLID, cursor='hand2', command=self.open_login_window)
login_btn.place(x=66.6, y=250, width=150, height=100)
register_btn = tk.Button(width=20, text='Register', font=self.font_medium, relief=tk.SOLID, cursor='hand2', command=self.open_registration_window)
register_btn.place(x=283.2, y=250, width=150, height=100)
exit_btn = tk.Button(width=20, text='Back', font=self.font_small, relief=tk.SOLID, cursor='hand2', command=self.quit)
exit_btn.place(x=212.5, y=400, width=75, height=50)
self.root.mainloop()
def open_login_window(self):
from Music_Generator_Login import LoginWindow
login_window = LoginWindow(self.root, self.back_to_page_1)
def back_to_page_1(self):
# Do any cleanup or actions needed when going back to page 1
pass
def open_registration_window(self):
from Music_Generator_Registration import RegistrationWindow
registration_window = RegistrationWindow(self.root)
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = MusicGenerationApp()
app.run()
Python:
import sqlite3
import tkinter as tk
from tkinter import messagebox
import tkinter.font as tkfont
from Music_Generation_App import MusicGenerationApp
class LoginWindow:
def __init__(self, parent, back_callback):
self.parent = parent
self.window = tk.Toplevel(parent)
self.window.title('Login')
self.window.geometry('500x500')
self.window.resizable(False, False)
self.create_widgets()
def create_widgets(self):
self.font_small = tkfont.Font(family="Arial", size=17)
self.font_medium = tkfont.Font(family="Arial", size=30)
self.font_large = tkfont.Font(family="Arial", size=38, weight='bold')
top_frame = tk.Frame(self.window, bd=2, bg='black', relief=tk.SOLID, padx=12, pady=10)
tk.Label(top_frame, text="Enter Login Details", bg='black', font=self.font_large).grid(padx=12, pady=10)
top_frame.place(x=50, y=50, width=400, height=100)
login_frame = tk.Frame(self.window, bd=2, bg='black', relief=tk.SOLID, padx=12, pady=10)
tk.Label(login_frame, text="Enter Email", bg='black', font=self.font_small).grid(row=0, column=0, sticky=tk.W, pady=10)
tk.Label(login_frame, text="Enter Password", bg='black', font=self.font_small).grid(row=1, column=0, sticky=tk.W, pady=10)
tk.Label(login_frame, text="Re-Enter Password", bg='black', font=self.font_small).grid(row=2, column=0, sticky=tk.W, pady=10)
self.email_tf = tk.Entry(login_frame, font=self.font_small)
self.pwd_tf = tk.Entry(login_frame, font=self.font_small, show='*')
self.repwd_tf = tk.Entry(login_frame, font=self.font_small, show='*')
login_btn = tk.Button(login_frame, width=16, text='Login', font=self.font_small, relief=tk.SOLID, cursor='hand2', command=self.login_response)
self.email_tf.grid(row=0, column=1, pady=5, padx=10)
self.pwd_tf.grid(row=1, column=1, pady=5, padx=10)
self.repwd_tf.grid(row=2, column=1, pady=5, padx=10)
login_btn.grid(row=3, column=1, pady=5, padx=10)
login_frame.place(x=50, y=200, width=400, height=200)
def login_response(self):
try:
con = sqlite3.connect('customer.db')
c = con.cursor()
for row in c.execute("Select * from customer"):
email = row[1]
pwd = row[2]
except Exception as ep:
messagebox.showerror('', ep)
uemail = self.email_tf.get()
upwd = self.pwd_tf.get()
check_counter = 0
warn = ""
if uemail == "":
warn = "Email can't be empty"
else:
check_counter += 1
if upwd == "":
warn = "Password can't be empty"
else:
check_counter += 1
if check_counter == 2:
if uemail == email and upwd == pwd:
messagebox.showinfo('Login Status', 'Logged in Successfully!')
self.open_main_window()
else:
messagebox.showerror('Login Status', 'Invalid username or password')
else:
messagebox.showerror('', warn)
def open_main_window(self):
main_window = MainWindow(self.parent)
def back_to_page_1(self):
self.window.destroy()
def run(self):
self.window.mainloop()
if __name__ == "__main__":
app = MusicGenerationApp()
app.run()
Python:
import tkinter as tk
import sqlite3
from tkinter import *
from tkinter import messagebox
import tkinter.font as tkfont
from Music_Generation_App import MusicGenerationApp
class RegistrationWindow:
def __init__(self, parent):
self.parent = parent
self.window = tk.Toplevel(parent)
self.window.title('Register')
self.window.geometry('500x500')
self.window.config(bg='dark red')
self.register_name = tk.Entry(self.window, font=('Arial', 16))
self.register_email = tk.Entry(self.window, font=('Arial', 16))
self.register_pwd = tk.Entry(self.window, font=('Arial', 16), show='*')
self.pwd_again = tk.Entry(self.window, font=('Arial', 16), show='*')
self.create_widgets()
def create_widgets(self):
self.font_small = tkfont.Font(family="Arial", size=17)
self.font_medium = tkfont.Font(family="Arial", size=30)
self.font_large = tkfont.Font(family="Arial", size=38, weight='bold')
top_frame = tk.Frame(self.window, bd=2,bg='black',relief=SOLID, padx= 4, pady = 10)
tk.Label (top_frame,text="Register your details",bg='black',font= self.font_large).grid(padx = 4,pady=10)
top_frame.place (x=50, y=50,width=400, height=100)
newFrame = tk.Frame(self.window, bd=2,bg='black',relief=SOLID, padx= 10, pady = 10)
tk.Label(newFrame, text = "Enter Name",bg = 'black', font = self.font_small).grid(row = 0, column = 0, sticky = W, pady=2)
tk.Label(newFrame, text = "Enter Email",bg = 'black', font = self.font_small).grid(row = 1, column = 0, sticky = W, pady=2)
tk.Label(newFrame, text = "Enter Password",bg = 'black', font = self.font_small).grid(row = 2, column = 0, sticky = W, pady=2)
tk.Label(newFrame, text = "Re-Enter Password",bg = 'black', font = self.font_small).grid(row = 3, column = 0, sticky = W, pady=2)
self.register_name = tk.Entry(newFrame, font=self.font_small)
self.register_email = tk.Entry(newFrame, font=self.font_small)
self.register_pwd = tk.Entry(newFrame, font=self.font_small, show='*')
self.pwd_again = tk.Entry(newFrame, font=self.font_small, show='*')
register_btn = Button(newFrame,width=16,text='Register',font=self.font_small,relief=SOLID,cursor='hand2',command=self.insert_record)
register_name.grid(row=0, column=1, pady=3, padx=12)
register_email.grid(row=1, column=1, pady=3, padx=12)
register_pwd.grid(row=2, column=1, pady=3, padx=12)
pwd_again.grid(row=3, column=1, pady=3, padx=12)
register_btn.grid(row=4, column=1, pady=5, padx=12)
newFrame.place(x=50, y=200, width = 400, height = 200)
def insert_record(self):
name = self.register_name.get()
email = self.register_email.get()
password = self.register_pwd.get()
pwd_again = self.pwd_again.get()
print("Values: name =", name, "email =", email, "password =", password, "pwd_again =", pwd_again)
if not name or not email or not password or not pwd_again:
messagebox.showerror('Error', 'Please fill in all fields.')
return
if password != pwd_again:
messagebox.showerror('Error', 'Passwords do not match.')
return
try:
con = sqlite3.connect('customer.db')
cur = con.cursor()
cur.execute("INSERT INTO customer VALUES (:name, :email, :password)", {
'name': name,
'email': email,
'password': password
})
con.commit()
messagebox.showinfo('Confirmation', 'Record Saved')
self.window.destroy() # Close the registration window
except Exception as ep:
messagebox.showerror('Error', ep)
def back_to_page_1(self):
self.window.destroy()
def run(self):
self.window.mainloop()
if __name__ == "__main__":
app = MusicGenerationApp()
app.run()