【发布时间】:2016-04-23 21:25:38
【问题描述】:
我不太确定以前是否有人问过这个问题,因为它似乎太微不足道而不能成为新问题,但是我已经四处寻找了一个小时,但没有找到任何东西
我正在使用 ttk Treeview 来显示和分析表格。对于给定的函数,我希望能够识别已双击的确切单元格(行和列)。虽然很容易找到行,但我找不到列,因为鼠标位置总是相对于屏幕显示,而不是相对于带有 winfo_pointerx() 的 Treeview。我也无法让 event.x 工作......
from Tkinter import *
import ttk
import utils
class AudiDataList():
def __init__(self, i_root, i_header, i_data, i_types):
self.root = i_root
f1 = ttk.Frame(root)
f1.pack()
t1 = ttk.Treeview(f1, columns=i_header, show="headings")
t1.pack()
for col in i_header:
t1.heading(col, text=col.title())
for item in i_data:
t1.insert('', 'end', values=item, tags = ('item',))
t1.tag_bind('item', "<Double-Button-1>", callback=lambda c=col: self.filter(t1, c, 0, i_types, i_header))
def filter(self, tree, col, descending, i_types, i_header):
print "Row: ", tree.focus()
print "X-position", tree.winfo_pointerx()
print "Column: ??? ",tree.identify_column(tree.winfo_pointerx())
header = ['col1', 'col2', 'col3']
datentypen = ['text', 'money', 'int']
data = [
('a', '1,00', 1) ,
('a', '2,00', 2) ,
('b', '12,10', 3) ,
('c', '2,10', 4) ,
('b', '3,00', 5)]
root = Tk()
Auditable = AudiDataList(root, header, data, datentypen)
root.mainloop()
非常感谢您的帮助。
【问题讨论】:
标签: python treeview python-2.x ttk