@lavagod

Python переключение фреймов?

Я пишу простую базу данных. На форме 5 кнопок, каждая из которых отвечат за свой фрейм. Клик на кнопке вызывает функцию, в которой все фреймы скрываются, а выбранный фрейм показывается. Все работает...
def table1():
	forget_all()
	f1.pack(fill=BOTH, expand=True)

def table2():
	forget_all()
	f2.pack(fill=BOTH, expand=True)

def table3():
	forget_all()
	f3.pack(fill=BOTH, expand=True)

def table4():
	forget_all()
	f4.pack(fill=BOTH, expand=True)

def table5():
	forget_all()
	f5.pack(fill=BOTH, expand=True)

def forget_all():
	f1.pack_forget()
	f2.pack_forget()
	f3.pack_forget()
	f4.pack_forget()
	f5.pack_forget()

# def table(e):
       # forget_all()
	# e.pack(fill=BOTH, expand=True)

f1 = Frame(root)
f2 = Frame(root)
f3 = Frame(root)
f4 = Frame(root)
f5 = Frame(root)

Button(text="Таблица 1",command=table1).place(x=100, y=10)
Button(text="Таблица 2",command=table2).place(x=200, y=10)
Button(text="Таблица 3",command=table3).place(x=300, y=10)
Button(text="Таблица 4",command=table4).place(x=400, y=10)
Button(text="Таблица 5",command=table5).place(x=500, y=10)


Но я хочу вместо 5 разных функций сделать одну универсальную, которая получает имя фрейма (или его индекс), скрывает все фреймы, а потом показывает выбранный. Вот такую примерно функцию

def table(e):
       forget_all()
	e.pack(fill=BOTH, expand=True)

Вызывается
Button(text="Таблица 1",command=table(1)).place(x=100, y=10)
или
Button(text="Таблица 1",command=table(f1)).place(x=100, y=10)


...но я не понимаю как передывать (и получать) в функцию объект frame. Кто подскажет в какую сторону думать?
  • Вопрос задан
  • 345 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
Через lambda-функцию или functools.partial, которую будете передавать в command.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы