Tkinter Treeview 双击某个项目

Tkinter Treeview 双击某个项目

在使用Treeview控件时,常常需要执行双击操作,最常见的是打开文档。本节将讲解这方面的知识。在Treeview控件中当发生双击时,会产生<Double-1>事件,我们可以利用这个功能建立一个双击的事件处理程序。

对于这类问题,另一个重点是取得双击的项目,下面将以实例讲解。

示例1

当双击Treeview控件中的某个项目时,会出现对话框,列出所选的项目。

from tkinter import * 
from tkinter import messagebox 
from tkinter.ttk import * 

def doubleClick(event):                             
    e = event.widget                                  # 取得事件控件
    iid = e.identify("item",event.x,event.y)          # 取得双击项目id
    state = e.item(iid,"text")                        # 取得state
    city = e.item(iid,"values")[0]                    # 取得city
    outputStr = "{0} : {1}".format(state,city)        # 格式化
    messagebox.showinfo("Double Clicked",outputStr)   # 输出

root = Tk()
root.title("ch18_12")

stateCity = {"Illinois": "Chicago", "California": "Los Angeles",
                "Texas": "Houston", "Washington": "Seattle",
                "Jiangsu": "Nanjing", "Shandong": "Qingdao",
                "Guangdong": "Guangzhou", "Fujian": "Xiamen"}

# 建立Treeview
tree = Treeview(root,columns=("cities"))
# 建立栏标题
tree.heading("#0",text="State")   # 图标栏
tree.heading("cities",text="City")
# 格式栏位
tree.column("cities",anchor=CENTER)
# 建立内容
for state in stateCity.keys():
    tree.insert("",index=END,text=state,values=stateCity[state])
tree.bind("<Double-1>",doubleClick)  # 双击绑定doubleClick方法
tree.pack()

root.mainloop()

输出:

Tkinter Treeview 双击某个项目

上述程序第31行,将双击操作与doubleClick( )方法绑定,所以当双击时会执行第5~11行的doubleClick( )方法。第6行是取得双击事件的控件,第7行identify( )方法的用法如下。

iid = e.identify("item",event.x,event.y)

第一个参数xxx可以是item、column、row,分别是使用双击时的坐标,取得双击时的item、column或row的信息,此例是使用item,所以我们可以由此获得是哪一个项目被双击。第8行是获得双击的“text”信息,此信息是State内容。第9行是获得双击的“values”信息,此信息是City内容。第9行是获得格式化的字符串,第10行是出现showinfo的消息对话框。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程