У меня есть программа, над которой я работаю, чтобы держать ее в том же окне, мои виджеты в рамке. Когда я хочу изменить окно, я использую frame.pack_forget () или frame.grid_forget (), а затем frame.destroy (), прежде чем просто добавить новый фрейм в новое окно. Однако, даже используя grid_forget, если я использую .pack (), я получаю сообщение об ошибке, в котором говорится, что я не могу использовать pack, когда что-то уже управляется сеткой. Кто-нибудь знает, как обойти это, сохраняя все в одном и том же окне?
.pack_forget, кажется, работает нормально, так как я могу без проблем переходить от кадра с помощью пакета к кадру с помощью сетки.
Вот воспроизведение проблемы:
from tkinter import *
root = Tk()
def main_Menu (root):
frame = Frame(root)
frame.pack()
button = Button(frame, text="button ", command=lambda:[frame.pack_forget(), frame.destroy, function(root)])
button.pack()
def function(root):
frame = Frame(root)
frame.grid(row=0)
back_Button = Button(root, text="Back", command=lambda:[frame.grid_forget(), frame.destroy(), return_To_Menu(root)])
back_Button.grid(row=0)
def return_To_Menu(root):
main_Menu(root)
main_Menu (root)