Причина, по которой это не работает так, как вы ожидаете, заключается в том, что ваша пользовательская привязка одним щелчком происходит до поведения по умолчанию. Таким образом, когда ваш один клик обрабатывается, это происходит до того, как выбран элемент. При втором нажатии ваша функция напечатает ранее выбранный элемент.
Если вы хотите, чтобы функция вызывалась при выборе элемента, вам следует привязать к <<TreeviewSelect>>
, который сработает сразу после того, как пользователь выберет элемент одним щелчком мыши или с помощью клавиатуры.
Поведение дерева по умолчанию поддерживает выбор нескольких элементов одновременно, поэтому следующий код распечатает текст всех выбранных элементов в виде списка, даже если выбран только один элемент. Конечно, вы можете изменить это, чтобы распечатать только первый выбранный элемент, если вы этого хотите.
def print_element(event):
tree = event.widget
selection = [tree.item(item)["text"] for item in tree.selection()]
print("selected items:", selection)
tree.bind("<<TreeviewSelect>>", print_element)