Пожалуйста, предоставьте больше контекста. Что должны делать эти две функции? Какая кнопка в Tkinter используется? Какая логика должна определять, какая из двух функций должна быть вызвана?
В Python 2 и Tkinter есть несколько способов привязать к одной кнопке две разные функции, и выбор лучшего способа зависит от того, как вы хотите решить, какую из функций вызывать.
Вот несколько подходов с объяснениями и примерами:
1. Использование одной функции-диспетчера, которая решает, какую функцию вызывать:
Этот метод наиболее распространен, когда у вас есть некоторое условие, определяющее, какую функцию следует выполнить.
import Tkinter as tk
def function1():
print "Вызвана функция 1"
def function2():
print "Вызвана функция 2"
def dispatcher():
# Здесь ваша логика, чтобы решить, какую функцию вызвать
if my_condition.get(): # Пример: Проверка состояния checkbutton
function1()
else:
function2()
root =
tk.Tk ()
my_condition = tk.BooleanVar()
check_button = tk.Checkbutton(root, text="Условие", variable=my_condition)
check_button.pack()
button = tk.Button(root, text="Нажми меня", command=dispatcher)
button.pack()
root.mainloop()
python
Объяснение:
function1() и function2(): Это ваши две функции, которые вы хотите вызывать. В этом примере они просто печатают сообщение.
dispatcher(): Это функция, которая будет вызвана при нажатии кнопки. Внутри нее находится логика (в данном случае if my_condition.get():), которая определяет, какую из function1() или function2() следует вызвать.
my_condition = tk.BooleanVar() и check_button: Это пример условия. my_condition - это переменная Tkinter, которая хранит булево значение (True/False). check_button - это Checkbutton, который позволяет пользователю устанавливать это значение.
button = tk.Button(root, text="Нажми меня", command=dispatcher): Кнопка создается с command=dispatcher. Это означает, что при нажатии кнопки будет вызвана функция dispatcher().
Как использовать: Замените # Здесь ваша логика... на код, который определяет, какую функцию вы хотите вызвать. Вам может потребоваться использовать глобальную переменную, значение из текстового поля, результат другой функции и т.д.
2. Использование лямбда-функции для передачи аргументов или частичного применения:
Этот способ полезен, когда вам нужно передать разные аргументы в ваши функции при каждом нажатии кнопки.
import Tkinter as tk
def function_with_argument(argument):
print "Вызвана функция с аргументом:", argument
def function_with_another_argument(argument):
print "Вызвана другая функция с аргументом:", argument
root =
tk.Tk ()
button1 = tk.Button(root, text="Кнопка 1", command=lambda: function_with_argument("Аргумент для функции 1"))
button1.pack()
button2 = tk.Button(root, text="Кнопка 2", command=lambda: function_with_another_argument("Аргумент для функции 2"))
button2.pack()
root.mainloop()
python