Я делаю интерфейс в Tkinter. У меня есть такая задача: сделать панель с кнопками сверху и несколько блоков с Text, Entry и некоторыми другими стандартными виджетами снизу. При этом я хочу, чтобы панель с кнопками была статичной, а фрейм снизу с указанными выше виджетами можно было бы обновить с другим количеством виджетов. При этом я не хочу полностью перерисовывать нижний фрейм. Если бы это был Toplevel, я бы мог просто использовать методы withdraw и deiconify, чтобы скрыть один фрейм и показать другой. Но Toplevel, насколько я понимаю, всегда рисуется как обособленное окно, а не часть виджета. Пожалуйста, предложите, как можно изменить Toplevel под данную задачу или что можно использовать вместо него.
Как вариант, есть методы lift и lower, для которых я использовал следующий код:
#!/usr/bin/python3 import tkinter as tk class SampleApp(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) self.frame = tk.Frame(self) self.frame.pack(side="top", fill="both", expand=True) self.label = tk.Label(self, text="Hello, world") button1 = tk.Button(self, text="Click to hide label",command=self.hide_label) button2 = tk.Button(self, text="Click to show label",command=self.show_label) self.label.pack(in_=self.frame) button1.pack(in_=self.frame) button2.pack(in_=self.frame) def show_label(self, event=None): self.label.lift(self.frame) def hide_label(self, event=None): self.label.lower(self.frame) if __name__ == "__main__": app = SampleApp() app.mainloop()
Как бы вы решили такую задачу?