grid_forget () по-прежнему приводит к ошибке при использовании пакета позже - PullRequest
0 голосов
/ 28 марта 2020

У меня есть программа, над которой я работаю, чтобы держать ее в том же окне, мои виджеты в рамке. Когда я хочу изменить окно, я использую 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)

1 Ответ

1 голос
/ 28 марта 2020

Ваша упакованная кнопка прикреплена к раме, а сетчатая кнопка прикреплена к root.

После изменения

    back_Button = Button(root, text="Back", command=lambda:[frame.grid_forget(), frame.destroy(), return_To_Menu(root)])
    back_Button.grid(row=0)

на

    back_Button = Button(frame, text="Back", command=lambda:[frame.grid_forget(), frame.destroy(), return_To_Menu(root)])
    back_Button.grid(row=0)

это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...