Функция tkinter lift () не поднимает фреймы на передний план

Я хочу, чтобы моя 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).

martineau 17.04.2018 04:54

ах боже, я тупой. Вы когда-нибудь смотрите на что-то вечно и просто соглашаетесь с тем, что ваш синтаксис в порядке. Спасибо.

Thomas Beirne 17.04.2018 04:59

Не расстраивайтесь, это довольно распространенная ошибка ... Я просто почувствовал, что проще рассказать вам о проблеме, чем искать повторяющийся вопрос.

martineau 17.04.2018 05:02
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
13
0

Другие вопросы по теме