簡體   English   中英

在tkinter.treeview中選擇一個單元格並獲取該單元格數據

[英]Select a cell in tkinter.treeview and get the cell data

我想使用鼠標指針在由tkinter.treeview()創建的表中選擇一個單元格,並打印出該單元格的值。 我怎樣才能做到這一點?

以下是創建tkinter.treeview表的示例代碼。 在這種情況下,我想使用鼠標指針單擊值“ Airport”。 但是,當我單擊該單元格時,將改為選擇整行(即小部件項目)。 我如何避免這種情況,以便得到想要的東西?

import tkinter as tk
import tkinter.ttk as ttk

class App(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        ttk.Frame.__init__(self, parent, *args, **kwargs)
        self.tree = ttk.Treeview(parent, columns=("size", "modified"))
        self.tree["columns"] = ("date", "time", "loc")

        self.tree.column("date", width=80)
        self.tree.column("time", width=80)
        self.tree.column("loc", width=100)

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

        self.tree.insert("","end",text = "Name",values = ("Date","Time","Loc"))
        self.tree.insert("","end",text = "John",values = ("2017-02-05","11:30:23","Airport"))
        self.tree.insert("","end",text = "Betty",values = ("2014-06-25","18:00:00","Orchard Road"))

        self.tree.grid()

    def selectItem(self, event):
        curItem = self.tree.focus()
        print (self.tree.item(curItem))


if __name__ == "__main__":
    window = tk.Tk()
    app = App(window)
    window.mainloop()

感謝Bryan Oakley的指導,我將selectItem回調修改為:

def selectItem(self, event):
    curItem = self.tree.item(self.tree.focus())
    col = self.tree.identify_column(event.x)
    print ('curItem = ', curItem)
    print ('col = ', col)

    if col == '#0':
        cell_value = curItem['text']
    elif col == '#1':
        cell_value = curItem['values'][0]
    elif col == '#2':
        cell_value = curItem['values'][1]
    elif col == '#3':
        cell_value = curItem['values'][2]
    print ('cell_value = ', cell_value)

它給了我我想要的東西。 希望此腳本可以幫助其他任何詢問相同問題的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM