【发布时间】:2020-11-21 07:32:50
【问题描述】:
我的tkinter treeview 中有 4 列。最后一列包含url links,形式为text。
我想enable用户点击他们想要的url cell,他们可以copy它。这可能吗?
任何帮助将不胜感激!
【问题讨论】:
我的tkinter treeview 中有 4 列。最后一列包含url links,形式为text。
我想enable用户点击他们想要的url cell,他们可以copy它。这可能吗?
任何帮助将不胜感激!
【问题讨论】:
假设tree 变量有一个Treeview 对象。首先,您应该将事件处理程序绑定到tree。然后,在您的事件处理函数中,您可以使用tree.focus() 来找出当前关注的树项。接下来,您需要确定当前单元格具有哪一列 - tree.identify_column 方法可以帮助解决它。最后,您可以检查它是否是所需的列。如果是这样,则将单元格值附加到剪贴板。
这是一个代码示例:
import tkinter as tk
from tkinter import ttk
def tree_click_handler(event):
cur_item = tree.item(tree.focus())
col = tree.identify_column(event.x)
if col == '#3':
root.clipboard_clear()
root.clipboard_append(cur_item['values'][2])
root = tk.Tk()
tree = ttk.Treeview(root)
tree.pack()
tree['columns'] = ('one', 'two', 'three')
tree.column('#0', width=170, stretch=tk.NO)
tree.column('one', width=100, stretch=tk.NO)
tree.column('two', width=100, stretch=tk.NO)
tree.column('three', width=180, stretch=tk.NO)
tree.heading('#0', text='Name', anchor=tk.W)
tree.heading('one', text='Col1', anchor=tk.W)
tree.heading('two', text='Col2', anchor=tk.W)
tree.heading('three', text='Col3', anchor=tk.W)
tree.insert(
'', 'end', text='The First Item Name',
values=('Col1_1', 'Col2_1', 'https://test0.test')
)
tree.insert(
'', 'end', text='The Second Item Name',
values=('Col1_2', 'Col2_2', 'https://test1.test')
)
tree.insert(
'', 'end', text='The Third Item Name',
values=('Col1_3', 'Col2_3', 'https://test2.test')
)
tree.bind('<ButtonRelease-1>', tree_click_handler)
root.mainloop()
【讨论】: