Я хочу, чтобы моя start_button (помеченная "End" на start_frame) выводила end_frame на передний план. Это должно отобразить end_button (помеченный "Start" в end_frame).
Затем я хочу, чтобы end_button (помеченный "Start") вернул пользователя к start_frame, подняв его наверх.
Это в основном переключало бы start_frame и end_frame, перемещая любой из них вверх с помощью кнопок.
Однако моя функция lift () не перемещает вещи наверх. Я знаю, что lift () не может перемещать детские рамки над их родителями, но не думаю, что я допустил эту ошибку. Где я ошибаюсь?
import Tkinter as tk
root = tk.Tk()
root.geometry("400x400")
#create main frame for window. This will hold all pages of the menu.
container = tk.Frame(root)
container.pack(side = "top", fill = "both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
#create subframes
start_frame = tk.Frame(container)
start_frame.grid(row=0, column=0, sticky = "nsew", in_ = container)
end_frame = tk.Frame(container)
end_frame.grid(row=0, column=0, sticky = "nsew", in_ = container)
#create UI widgets for subframew
start_button = tk.Button(start_frame, text = "End", fg = "blue", command = end_frame.lift())
start_button.pack(side = tk.BOTTOM)
end_button = tk.Button(end_frame, text = "Start", fg = "blue", command = start_frame.lift())
end_button.pack(side = tk.BOTTOM)
root.mainloop()
РЕДАКТИРОВАТЬ : Я пробовал вызывать start_button.lift () и end_button.lift (), но это дает тот же результат.
ах боже, я тупой. Вы когда-нибудь смотрите на что-то вечно и просто соглашаетесь с тем, что ваш синтаксис в порядке. Спасибо.
Не расстраивайтесь, это довольно распространенная ошибка ... Я просто почувствовал, что проще рассказать вам о проблеме, чем искать повторяющийся вопрос.






Измените
command = end_frame.lift()наcommand = end_frame.lift, потому что в противном случае вы фактически вызываете его в вызове конструктораButton(и поскольку он, вероятно, возвращаетNone, это то, что назначается атрибутуcommand).