Изменение окна customtkinter

Рейтинг: 1Ответов: 0Опубликовано: 08.05.2023

Пытаюсь сделать так, чтобы окно менялось при нажатии на кнопку Регистрации, но пока получилось только новое окно открывать,подскажите пожалуйста, как можно сделать так, чтобы менялся сам интерфейс, то-есть кнопки и т.д. Вот код:

import tkinter
import customtkinter
import customtkinter as ctk

mode = 'log'

customtkinter.set_appearance_mode("Dark")
customtkinter.set_default_color_theme("blue")

class App(ctk.CTk):
    def __init__(self):
        if mode == 'log':
            super().__init__()
            x = (self.winfo_screenwidth() - self.winfo_reqwidth()) / 2.7
            y = (self.winfo_screenheight() - self.winfo_reqheight()) / 2.7
            self.wm_geometry("+%d+%d" % (x, y))
            self.geometry('460x370')
            self.title('Авторизация')
            self.resizable(False, False)

            self.loginbtn = ctk.CTkButton(master=self, fg_color="#448ec9", border_width=2, text_color=("gray10", "#DCE4EE"), 
                                                        text='Войти', command=self.loginbtncheck)
            self.loginbtn.grid(row=5, column=2, padx=(150, 20), pady=(00, 20), sticky="nsew")

            self.registerwinbtn = ctk.CTkButton(master=self, fg_color="#1883db", border_width=2, text_color=("gray10", "#DCE4EE"), 
                                                        text='Регистрация', command=regfunc)
            self.registerwinbtn.grid(row=6, column=2, padx=(150, 20), pady=(00, 20), sticky="nsew")
            
            #self.logo = CTk.CTkImage()
            self.entrylogin = customtkinter.CTkEntry(self, placeholder_text="Логин:")
            self.entrylogin.grid(row=3, column=2, columnspan=2, padx=(130, 0), pady=(80, 20), sticky="nsew")
            self.entrypass = customtkinter.CTkEntry(self, placeholder_text="Пароль:", show='*')
            self.entrypass.grid(row=4, column=2, columnspan=2, padx=(130, 0), pady=(00, 20), sticky="nsew")

        if mode == 'reg':
            super().__init__()
            x = (self.winfo_screenwidth() - self.winfo_reqwidth()) / 2.7
            y = (self.winfo_screenheight() - self.winfo_reqheight()) / 2.7
            self.wm_geometry("+%d+%d" % (x, y))
            self.geometry('460x370')
            self.title('Регистрация')
            self.resizable(False, False)

            self.loginbtn = ctk.CTkButton(master=self, fg_color="#448ec9", border_width=2, text_color=("gray10", "#DCE4EE"), 
                                                        text='Войти', command=self.loginbtncheck)
            self.loginbtn.grid(row=6, column=2, padx=(150, 20), pady=(00, 20), sticky="nsew")

            #Кнопка регистрации
            self.registerwinbtn = ctk.CTkButton(master=self, fg_color="#1883db", border_width=2, text_color=("gray10", "#DCE4EE"), 
                                                        text='Регистрация', command=regfunc)
            self.registerwinbtn.grid(row=7, column=2, padx=(150, 20), pady=(00, 20), sticky="nsew")
            
            #Строки ввода
            self.entrylogin = customtkinter.CTkEntry(self, placeholder_text="Логин:")
            self.entrylogin.grid(row=3, column=2, columnspan=2, padx=(130, 0), pady=(80, 20), sticky="nsew")
            self.entrypass1 = customtkinter.CTkEntry(self, placeholder_text="Пароль:", show='*')
            self.entrypass1.grid(row=4, column=2, columnspan=2, padx=(130, 0), pady=(00, 20), sticky="nsew")
            self.entrypass2 = customtkinter.CTkEntry(self, placeholder_text="Подтвердите пароль:", show='*')
            self.entrypass2.grid(row=5, column=2, columnspan=2, padx=(130, 0), pady=(00, 20), sticky="nsew")
    

    def loginbtncheck(self):
        login = self.entrylogin.get()
        password = self.entrypass.get()
        if login == 'username' and password == 'password':
            #Open file
            exit()
        else:
            label = customtkinter.CTkLabel(master=self,
                               text="Неверный логин/пароль!", width=120, height=25, corner_radius=8)
            label.place(relx=0.477, rely=0.1, anchor=tkinter.CENTER)


def regfunc():
    global mode
    mode = 'reg'
    app = App()
    app.mainloop()

if __name__ == '__main__':
    app = App()
    app.mainloop()

Ответы

Ответов пока нет.