有没有办法将两个帧放在完全相同的位置上?但是只有一个可见。
我尝试过这样的尝试:
def open_one(event):
Frame2.grid_forget()
Frame1.grid(column=1,row=2,rowspan=3,sticky=W, padx = 50)
def open_two(event):
Frame1.grid_forget()
Frame2.grid(column=1,row=2,rowspan=3,sticky=W, padx = 50)
,但是网格管理器保留在网格中彼此相邻的空间,我所有其他小部件现在都处于错误的位置。
您可以使用以下所示的grid_forget
,以删除tk.Frame
并将其替换为另一个:
import tkinter as tk
class Display(tk.Frame):
def __init__(self, parent, color):
super().__init__(parent, bg=color, width=100, height=100)
tk.Label(self, text=color).pack(padx=50, pady=50)
class App(tk.Tk):
def __init__(self):
super().__init__()
self.displays = [Display(self, 'cyan'), Display(self, 'green')]
self.showing_counter = 0
self.displays[self.showing_counter].grid(row=0, column=0)
self.swap_frames_btn = tk.Button(self, text='swap', command=self.swap_displays)
self.swap_frames_btn.grid(row=1, column=0)
self.mainloop()
def swap_displays(self):
"""replace a frame with another"""
self.displays[self.showing_counter].grid_forget()
self.showing_counter = (self.showing_counter + 1) % 2
self.displays[self.showing_counter].grid(row=0, column=0)
if __name__ == '__main__':
App()