我刚开始在python 3.4中使用一个小的tkinter树程序。
我一直在返回所选行的第一个值。
我有多行,有4列,左键单击某个项时调用A函数:

tree.bind('<Button-1>', selectItem)

功能:
def selectItem(a):
    curItem = tree.focus()
    print(curItem, a)

这给了我这样的感觉:
I003 <tkinter.Event object at 0x0179D130>

所选项目似乎已正确标识。
我现在需要的只是如何获取行中的第一个值。
树创建:
from tkinter import *
from tkinter import ttk

def selectItem():
    pass

root = Tk()
tree = ttk.Treeview(root, columns=("size", "modified"))
tree["columns"] = ("date", "time", "loc")

tree.column("date", width=65)
tree.column("time", width=40)
tree.column("loc", width=100)

tree.heading("date", text="Date")
tree.heading("time", text="Time")
tree.heading("loc", text="Loc")
tree.bind('<Button-1>', selectItem)

tree.insert("","end",text = "Name",values = ("Date","Time","Loc"))

tree.grid()
root.mainloop()

最佳答案

要获取所选项目及其所有属性和值,可以使用item方法:

def selectItem(a):
    curItem = tree.focus()
    print tree.item(curItem)

这将输出一个字典,然后您可以从中轻松检索单个值:
{'text': 'Name', 'image': '', 'values': [u'Date', u'Time', u'Loc'], 'open': 0, 'tags': ''}

另外请注意,回调将在更改树中的焦点之前执行,也就是说,您将获得在单击新项之前选择的项。解决此问题的一种方法是使用事件类型ButtonRelease
tree.bind('<ButtonRelease-1>', selectItem)

关于python - python tkinter树获取所选项目值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30614279/

10-12 21:10