ttk.Treeview - Как изменить выбор, не нажимая сначала - PullRequest
0 голосов
/ 02 ноября 2018

Я думал, что установка строки, которая будет выбрана по умолчанию в ttk.Treeview, сделает ненужным первое нажатие, чтобы начать использовать кнопки со стрелками на клавиатуре, чтобы изменить выбор. Это не сработало, поэтому я попытался установить фокус на Treeview, но ничего не получилось после долгих проб и ошибок. Я посмотрел в исходном коде для ttk, чтобы увидеть, есть ли у виджета Treeview привязка к мыши, но нет такой вещи. Это озадачивает, и у меня нет достаточного опыта, чтобы знать, где еще искать. Я привык к проводнику Windows, который готов к работе без мыши, как только он открывается, с помощью кнопок со вкладками или стрелками.

Я попробовал несколько онлайн-примеров виджетов Treeview, и все они должны щелкнуть строку, прежде чем клавиши со стрелками смогут изменить выбор. Как это можно переопределить? Я полагаю, что мне нужно смоделировать нажатие кнопки, но я не смог найти обратный вызов для нажатия кнопки в исходном коде. Спасибо за любую помощь.

(В моем приложении обычно всего несколько строк, поэтому не имеет смысла сначала щелкать).

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

tree = ttk.Treeview(root, columns=('size', 'modified'), selectmode='browse')

tree.heading('size', text='SIZE')
tree.heading('modified', text='MODIFIED')

tree.insert('', 0, 'gallery1', text='Applications1')
tree.insert('', 1, 'gallery2', text='Applications2')

tree.selection_set('gallery1')

tree.focus_set()

tree.grid()
root.mainloop()

1 Ответ

0 голосов
/ 02 ноября 2018

Я попробовал несколько онлайн-примеров виджетов Treeview, и все они должны щелкнуть строку, прежде чем клавиши со стрелками смогут изменить выбор. Как это можно переопределить?

К сожалению, виджеты ttk немного странные. Вы должны убедиться, что виджет в целом имеет фокус, что элемент выбран, и выбранный элемент должен иметь фокус. Вы сделали первые два, но не третий.

Добавьте следующее после вызова focus_set():

tree.focus('gallery1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...