有没有办法在完全相同的位置放置两个帧?但只有一个是可见的。
我试过这样:
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)
但是网格管理器在网格中保留了彼此相邻的空间,而我现在所有其他小部件都处于错误的位置。
答案 0 :(得分:0)
如下所示,您可以使用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()