Tkinter - 如何在按下底部时转到 Treeview 的顶部,反之亦然?
Tkinter - How to go to the top of a Treeview when pressing down at the bottom, and vice versa?
tree = ttk.Treeview(root, selectmode="browse")
tree.pack()
当用户在已经 select 编辑了最后一个项目时按下向下箭头键,我需要它 select 顶部项目,向上箭头也是如此。谢谢!
您可以 bind()
函数在 TreeView
中键入 Down
(Up
) 这将检查您是否在最后(第一)行并跳转到第一行(最后)行。它必须移动选择、移动焦点、滚动 window 和阻止事件,因此 TreeView 不会使用此键移动到下(上)行。
import tkinter as tk
from tkinter import ttk
def jump_to_first(event):
last = tree.get_children()[-1]
if tree.focus() == last:
first = tree.get_children()[0]
tree.selection_set(first) # move selection
tree.focus(first) # move focus
tree.see(first) # scroll to show it
return "break" # don't send event to TreeView
def jump_to_last(event):
first = tree.get_children()[0]
if tree.focus() == first:
last = tree.get_children()[-1]
tree.selection_set(last) # move selection
tree.focus(last) # move focus
tree.see(last) # scroll to show it
return "break" # don't send event to TreeView
root = tk.Tk()
tree = ttk.Treeview(root, selectmode="browse")
tree.pack()
for x in range(1, 21):
print(tree.insert('', 'end', text=str(x)))
tree.bind('<Down>', jump_to_first)
tree.bind('<Up>', jump_to_last)
root.mainloop()
tree = ttk.Treeview(root, selectmode="browse")
tree.pack()
当用户在已经 select 编辑了最后一个项目时按下向下箭头键,我需要它 select 顶部项目,向上箭头也是如此。谢谢!
您可以 bind()
函数在 TreeView
中键入 Down
(Up
) 这将检查您是否在最后(第一)行并跳转到第一行(最后)行。它必须移动选择、移动焦点、滚动 window 和阻止事件,因此 TreeView 不会使用此键移动到下(上)行。
import tkinter as tk
from tkinter import ttk
def jump_to_first(event):
last = tree.get_children()[-1]
if tree.focus() == last:
first = tree.get_children()[0]
tree.selection_set(first) # move selection
tree.focus(first) # move focus
tree.see(first) # scroll to show it
return "break" # don't send event to TreeView
def jump_to_last(event):
first = tree.get_children()[0]
if tree.focus() == first:
last = tree.get_children()[-1]
tree.selection_set(last) # move selection
tree.focus(last) # move focus
tree.see(last) # scroll to show it
return "break" # don't send event to TreeView
root = tk.Tk()
tree = ttk.Treeview(root, selectmode="browse")
tree.pack()
for x in range(1, 21):
print(tree.insert('', 'end', text=str(x)))
tree.bind('<Down>', jump_to_first)
tree.bind('<Up>', jump_to_last)
root.mainloop()