What's new

Python How to redirect a file_1.py to file_2.py vice versa [TKinter] | Noob Question

PHC - Naethan

Forum Expert
Joined
Dec 27, 2016
Posts
3,374
Reaction
18,121
Points
2,599
Age
22
Good Afternoon mga ka PHC

Ask lng ako about python pano mag redirect form by form vice versa, Eto pala yung File

Login.py
Python:
import customtkinter as ctk
import os
from tkinter import messagebox
from customtkinter import *
from PIL import Image, ImageTk
window = None
def exit_app(event = None):
    window.destroy()
def log_in(event = None):
    user = window.user_name.get().strip()
    passd = window.password.get()
    if user == 'admin' and passd == 'password':
        messagebox.showinfo('Success', "Login, was successfull!!")
        #new_window()
    else:
        if not user and not passd:
            messagebox.showwarning('Warning', "Invalid Username and Password")
        elif user != 'admin':
            messagebox.showwarning('Invalid', "Invalid Username")
        elif passd != 'password':
            messagebox.showwarning('Warning', "Invalid Password")
        else:
            messagebox.showwarning('Invalid', "Invalid Username and Password")
def signup_btn():
    global window
    window.destroy()
    import Signup
    from Signup import SignUp
    signup_form = SignUp()
    signup_form.mainloop()
 
 
'''def new_window():
    def back_event(event = None):
        newForm.destroy()
        recreate_main_window()
    window.destroy()
    # Pansamantala
    ctk.set_appearance_mode("system")  # Modes: system (default), light, dark
    ctk.set_default_color_theme("blue")
 
    newForm = ctk.CTk()
    newForm.title('LoginForm')
    newForm.geometry('925x500+300+200')
    newForm.resizable(False, False)
    container_newF = CTkFrame(master=newForm)
    container_newF.pack(fill = 'both', expand = True)
    CTkLabel(master = container_newF, text='Welcome To Inventory System', width=50, height=50, font=CTkFont(family='ROBOTO', size=30, weight='bold'), anchor=CENTER).pack()
    CTkButton(master = container_newF, text='Back', width=150, height=30, command=back_event).pack()
    newForm.mainloop()
def recreate_main_window():
    global window
    window = ctk.CTk()
    window.geometry("925x500+300+200")
    window.resizable(False, False)
    div_con = CTkFrame(master=window)
    div_con.pack(fill='both', expand=True)
    # Rest of your code to set up the main window interface (background, login form, etc.)
    window.bind('<Return>', log_in)
    window.bind('<Escape>', exit_app)
    window.mainloop()'''

###### Main Window ######
class LogIn(ctk.CTk):
    def init(self, *args, **kwargs):
        super().init(*args, **kwargs)
        ctk.set_appearance_mode("system")
        self.window = ctk.CTk()
        self.title("Login_Form")
        self.geometry("925x500+300+200")
        self.resizable(False, False)
        # Main Container
        self.div_con = CTkFrame(master=self)
        self.div_con.pack(fill = 'both', expand = True)
        # Left Column, ++++++++++Background
        self.width, self.height = 300, 300
        self.c_Path = os.path.dirname(os.path.realpath(file)) # Optional
        self.bg_img = CTkImage(Image.open(self.c_Path + '/images/login.png'), size=(self.width, self.height))
        CTkLabel(master = self.div_con, image=self.bg_img, text = '').place(relx = 0.12, rely = 0.18,)
        # Right Column, ++++++++++++Login
        self.login_con = CTkFrame(master=self.div_con)
        self.login_con.pack(side = RIGHT, padx = 110)
        # Elements
        self.heading = CTkLabel(master = self.login_con, text='Sign in', font=('Sans serif fonts', 25,'bold'))
        self.heading.pack(padx = 21, pady = 35)
 
        self.user_name = CTkEntry(master = self.login_con, fg_color='#333333', placeholder_text='Username', height=35, width=300, border_width=0, border_color="white", font=('Roboto', 11))
        self.user_name.pack(padx = 23, pady = 10)
        self.userCTkFrame = CTkFrame(master = self.login_con, width=300, height=2, fg_color='white')
        self.userCTkFrame.place(relx = 0.07, rely = 0.41)
        self.password = CTkEntry(master = self.login_con, fg_color='#333333', placeholder_text='Password', show = '*', height=35, width=300, border_width=0, border_color="white", font=('Roboto', 11))
        self.password.pack(padx = 23, pady = 10)
        self.passCTkFrame = CTkFrame(master = self.login_con, width=300, height=2, fg_color='white')
        self.passCTkFrame.place(relx = 0.07, rely = 0.57)
        CTkButton(master = self.login_con, width=200, height=30, border_width=0, text="Log in", font=('Segoe UI', 10, 'bold'), command=log_in).pack(padx = 23, pady = 10, ipady = 5)
        self.bind('<Return>', log_in)
        self.bind('<Escape>', exit_app)
        CTkLabel(master = self.login_con, text="Don't have an account yet ?", font=('Segoe UI', 9)).pack(padx = 91, ipady = 20, side = LEFT)
        CTkButton(master = self.login_con, width=35, height=35, cursor = 'hand2', text='Sign up', text_color="white", fg_color="#333333", border_width=0, font=('Segoe UI', 10, 'bold'), command=signup_btn).place(relx = 0.58, rely = 0.85)
# int main()
if name == "main":
    window = LogIn()
    window.mainloop()

Signup.py
Python:
import os
import customtkinter as ctk
from customtkinter import *
from tkinter import messagebox
from PIL import Image
def log_in(event = None):
    user = root.user_name.get().strip()
    passd = root.password.get()
    conf_passd = root.confirm_password.get()
    r_email = root.recov_email.get().strip()
    check_checkbox = root.checkbox_var.get()
    if not check_checkbox:
        messagebox.showinfo('Error', "You can't create an account if you don't agree w/ us")
    else:
        if not passd and not conf_passd and not conf_passd and not r_email:
                messagebox.showwarning('Warning', "Please fill out all requirements")
        else:
            if user == '':
                messagebox.showwarning('Invalid', "Please fill out Username")
            elif passd == '':
                messagebox.showwarning('Warning', "Please fill out password")
            elif conf_passd == '':
                messagebox.showwarning('Warning', "Confirm password is required")
            elif r_email == '':
                messagebox.showwarning('Warning', "Please fill out Recovery Email")
            else:
                if passd != conf_passd:
                    messagebox.showwarning('Warning', "Password and Confirm Password did not match")
                else:
                    messagebox.showinfo('Success', "Login, was successfull!!")
                    redirect_Signin()
def exit_app(e):
    root.destroy()
def redirect_Signin():
    global root
    root.destroy()
    import Login
    from Login import LogIn
    Signin_form = LogIn()
    Signin_form.mainloop()
def sign_in(e=None):
    redirect_Signin()
# Self Sign_Up Form
class SignUp(ctk.CTk):
    def [B]init[/B](self, *args, **kwargs):
        super().[B]init[/B](*args, **kwargs)
        ctk.set_appearance_mode("system")
        self.root = ctk.CTk()
        self.title("Signup_Form")
        self.geometry("925x650+300+200")
        self.resizable(False, False)
        # Main Container
        self.div_con = CTkFrame(master=self)
        self.div_con.pack(fill = 'both', expand = True)
        # Left Column, ++++++++++Background
        self.width, self.height = 470, 470
        self.c_Path = os.path.dirname(os.path.realpath([B]file[/B])) # Optional
        self.bg_img = CTkImage(Image.open(self.c_Path + '/images/Signup_bg.png'), size=(self.width, self.height))
        CTkLabel(master = self.div_con, image=self.bg_img, text = '').place(relx = 0.03, rely = 0.14)
        # Right Column, ++++++++++++Login
        self.signup_con = CTkFrame(master=self.div_con)
        self.signup_con.pack(side = RIGHT, padx = 90)
        # Elements Form
        self.heading = CTkLabel(master = self.signup_con, text='Sign up', font=('Sans serif fonts', 25,'bold'))
        self.heading.pack(anchor = CENTER, pady = 35)
 
        self.user_name = CTkEntry(master = self.signup_con, placeholder_text='Username', height=35, width=300, border_width=0, border_color="white", font=('Roboto', 11))
        self.user_name.pack(padx = 23, pady = 10)

        self.password = CTkEntry(master = self.signup_con, placeholder_text='Password', show = '*', height=35, width=300, border_width=0, border_color="white", font=('Roboto', 11))
        self.password.pack(padx = 23, pady = 10)
        self.confirm_password = CTkEntry(master = self.signup_con, placeholder_text='Confirm Password', show = '*', height=35, width=300, border_width=0, border_color="white", font=('Roboto', 11))
        self.confirm_password.pack(padx = 23, pady = 10)

        self.recov_email = CTkEntry(master = self.signup_con, placeholder_text='Enter your recovery email', show = '*', height=35, width=300, border_width=0, border_color="white", font=('Roboto', 11))
        self.recov_email.pack(padx = 23, pady = 10)
        self.checkbox_var = BooleanVar()
        self.checkbox = CTkCheckBox(master = self.signup_con, border_width=1, text="Agree to our Terms & Condition", font=('Segoe UI', 10,), checkbox_height=11, checkbox_width=11, variable=self.checkbox_var)
        self.checkbox.pack(padx = 12, pady = 5)
        # Creating a Separator widget
        self.hr_width, self.hr_height = 350, 30
        self.hr = CTkImage(Image.open(self.c_Path + '/images/Purple_line.png'), size = (self.hr_width, self.hr_height))
        CTkLabel(master=self.signup_con, image=self.hr, text='').pack(fill = 'both')
        self.signup_btn = CTkButton(master = self.signup_con, width=250, height=30, border_width=2, text="Log in", font=('Segoe UI', 10, 'bold'), command=log_in)
        self.signup_btn.pack(padx = 23, pady = 10, ipady = 5)
        self.bind('<Return>', log_in)
        self.bind('<Escape>', exit_app)
        CTkLabel(master = self.signup_con, text=" Have an acount already ?", font=('Segoe UI', 9)).pack(padx = 99, ipady = 20, side = LEFT)
        CTkButton(master = self.signup_con, width=35, height=35, cursor = 'hand2', text='Sign in', text_color="white", fg_color="#333333", border_width=0, font=('Segoe UI', 10, 'bold'), command=sign_in).place(relx = 0.57, rely = 0.90)
if [B]name[/B] == "[B]main[/B]":
    root = SignUp()
    root.mainloop()

Sorry narin sa abala, Thanks in adv 🫰
 
Last edited:
Back
Top