В настоящее время я работаю на основе tkinter python gui, и в моей программе вы можете нажать кнопку, и тогда первый виджет станет невидимым, а другой не отобразится в той же позиции, что и первый один. После этого вы можете переключиться назад, и второй виджет исчезнет, а первый будет в том же положении видимым и т. Д. ...
Моя цель состоит в том, чтобы два виджета получили одинаковый размер, если вы при переключении виджетов пользователь не увидит больше / меньше виджетов, но я не могу сказать, как мне туда добраться - можете ли вы мне помочь?
Мое окно tkinter:
self.window = tkinter.Tk()
self.window.resizable(True, True)
self.window.grid_rowconfigure(2, weight=1)
self.window.grid_columnconfigure(0, weight=2)
self.window.grid_columnconfigure(1, weight=1)
Моя рамка для двух виджетов:
contentFrame = tkinter.Frame(master=self.window, bg="#FFF", highlightthickness=0, borderwidth=0)
contentFrame.grid_rowconfigure(0, weight=1)
contentFrame.grid_columnconfigure(0, weight=1)
contentFrame.grid(column=0, row=2, padx=5, pady=5, sticky="nsew")
Мой первый виджет (красный):
canvas = tkinter.Canvas(master=contentFrame, bg="#F00", highlightthickness=0, borderwidth=0)
canvas.pack(fill="both", expand=True)
Мой второй виджет (синий)
xmlEditor = tkinter.Text(master=contentFrame, bg="#00F", highlightthickness=0, borderwidth=0)
И что происходит, когда меняется с красного на синий:
self.window.children["!frame2"].children["!canvas"].pack_forget()
self.window.children["!frame2"].children["!text"].pack(fill="both", expand=True)
И что происходит, когда меняется с синего на красный:
self.window.children["!frame2"].children["!text"].pack_forget()
self.window.children["!frame2"].children["!canvas"].pack(fill="both", expand=True)
Посмотрите видео здесь чтобы увидеть проблему в действии:)