Я пытаюсь поднять рамку «Поиск» над рамкой «Логин», когда пользователь нажимает кнопку «Войти». Я думаю, что это может иметь какое-то отношение к тому, как я складываю свои фреймы, но я не уверен, что это такое.
Я проверил, запускается ли функция show_frame после того, как пользователь нажимает кнопку «Войти», ида, но рамка не поднимается.
import tkinter as tk
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
root = tk.Frame(self)
self.screen_w = root.winfo_screenwidth()
self.screen_h = root.winfo_screenheight()
self.frames = {}
for F in (Login, Search):
page_name = F.__name__
frame = F(parent=root, controller=self)
self.frames[page_name] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame("Search")
def show_frame(self, page_name):
'''Show a frame for the given page name'''
frame = self.frames[page_name]
frame.tkraise()
class Login(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.screen_w = controller.screen_w
self.screen_h = controller.screen_h
self.display()
def display(self):
#login page (frame)
self.login_page = tk.Frame(width=self.screen_w, height=self.screen_h, background="#ABEBC6")
self.login_section = tk.Frame(width=100, height=100, background="#52BE80")
self.login_page.pack()
self.login_section.place(in_=self.login_page, anchor="c", relx = 0.5, rely = 0.5, relheight = 0.5, relwidth = 0.5)
self.login_button = tk.Button(self.login_section, text='Login', fg = 'black', bg = 'green')
self.login_button.place(relx = 0.5, rely = 0.55, relheight = 0.1, relwidth = 0.4, anchor = 'c')
self.login_button.bind('<Button-1>', self.check_login)
def check_login(self, event):
self.controller.show_frame('Search')
class Search(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.screen_w = controller.screen_w
self.screen_h = controller.screen_h
self.display()
def display(self):
#search page (frame)
self.search_page = tk.Frame(width=self.screen_w, height=self.screen_h, background="#85C1E9")
self.search_section = tk.Frame(width=100, height=100, background="#5DADE2")
self.search_page.pack()
self.search_section.place(in_=self.search_page, relx = 0.5, rely = 0.5, relheight = 0.5, relwidth = 0.5, anchor = 'center')
if __name__ == "__main__":
app = App()
app.mainloop()