Невозможно вернуться из функции, назначенной событию (или используется в command=
, bind()
или after()
).Вы можете назначить только глобальную переменную и использовать позже в другой функции.
Ваш print()
после bind()
выполняется до того, как mainloop()
покажет окно, и это НЕ «другая функция».
Я использую две функции: одну для получения значений при левой кнопке мышии, во-вторых, использовать эти значения при нажатии правой кнопки мыши.Вторая функция использует значения из первой функции.Это показывает, что значение из первой функции присваивается глобальным переменным.
from tkinter import *
# --- functions ---
def getorigin(event):
global x0, y0 # inform function to assing to global variables instead of local variables
x0 = event.x
y0 = event.y
print('getorigin:', x0, y0)
def other_function(event):
#global x0, y0 # this function doesn't assign to variables so it doesn't need `global`
print('other function', x0, y0)
# --- main ---
# create global variables
x0 = 0
y0 = 0
root = Tk()
w = Canvas(root, width=1000, height=640)
w.pack()
w.bind("<Button-1>", getorigin)
w.bind("<Button-3>", other_function)
print('before mainloop:', x0, y0) # executed before mainloop shows window
root.mainloop()