Tkinter Treeview 插入项目

Tkinter Treeview 插入项目

在使用Treeview控件时,除了删除控件项目外,另一个常用功能是插入项目。插入的方式与建立控件的插入方法insert( )是一样的。至于所插入的内容则可以使用tkinter的Entry控件。下面将用实例说明。

示例1

增加设计插入功能,由于这个Treeview控件包含图标栏下共有两个栏位,所以若是想要插入必须建立两个Entry控件。由于我们必须标出所插入的控件,所以必须在Entry旁加上两个标签。另外,在执行插入时必须使用一个按钮表示出执行插入操作,所以必须另外创建一个按钮。

from tkinter import * 
from tkinter.ttk import * 

def removeItem():            # 删除所选项目
    ids = tree.selection()   # 取得所选项目
    for id in ids:           # 所选项目可能很多所以用循环
        tree.delete(id)      # 删除所选项目
def insertItem(): 
    state = stateEntry.get() # 获得stateEntry的输入
    city = cityEntry.get()   # 获得cityEntry的输入
# 如果输入数据不完全不往下执行
    if (len(state.strip())==0 or len(city.strip())==0):
        return
    tree.insert("",END,text=state,values=(city))   # 插入 # tree.insert("",END,text=state,values=city)
    stateEntry.delete(0,END)                       # 删除stateEntry
    cityEntry.delete(0,END)                        # 删除cityEntry

root = Tk()
root.title("apidemos.com")

stateCity = {"Illinois": "Chicago", "California": "Los Angeles",
                "Texas": "Houston", "Washington": "Seattle",
                "Jiangsu": "Nanjing", "Shandong": "Qingdao",
                "Guangdong": "Guangzhou", "Fujian": "Xiamen"}
# 以下三行主要是应用在缩放窗口
root.rowconfigure(1,weight=1)       # row1会随窗口缩放1:1变化
root.columnconfigure(1,weight=1)    # column1会随窗口缩放1:1变化
root.columnconfigure(3,weight=1)    # column3会随着窗口缩放1:1变化

stateLab = Label(root,text="State :")   # 建立State:标签
stateLab.grid(row=0,column=0,padx=5,pady=3,sticky=W)
stateEntry = Entry()                    # 建立State:文本框
stateEntry.grid(row=0,column=1,sticky=W+E,padx=5,pady=3)
cityLab = Label(root,text="City : ")
cityLab.grid(row=0,column=2,sticky=E)
cityEntry = Entry()
cityEntry.grid(row=0,column=3,sticky=W+E,padx=5,pady=3)
# 建立Insert按钮
inBtn = Button(root,text="Insert",command=insertItem)
inBtn.grid(row=0,column=4,padx=5,pady=3)
# 建立Treeview,可以有多项选择selectmode=EXTENDED
tree = Treeview(root,columns=("cities"),selectmode=EXTENDED)
# 建立栏标题
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.grid(row=1,column=0,columnspan=5,padx=5,sticky=W+E+N+S)

rmBtn = Button(root,text="Delete",command=removeItem) # “删除”按钮
rmBtn.grid(row=2,column=2,padx=5,pady=3,sticky=W)

root.mainloop()

输出:

Tkinter Treeview 插入项目

上述程序第26~28行主要是处理缩放窗口时Treeview的变化,第26行的rowconfigure( )方法内的第一个参数是1,代表row=1,相当于让row=1的Treeview控件随着窗口缩放,缩放比由第二个参数weight=1得知是1∶1缩放。第27行的columnconfigure( )方法内的第一个参数是1,代表column=1,相当于让column=1的stateEntry控件随着窗口缩放,缩放比由第二个参数weight=1得知是1∶1缩放。第28行的columnconfigure( )方法内的第一个参数是3,代表column=3,相当于让column=3的cityEntry控件随着窗口缩放,缩放比由第二个参数weight=1得知是1∶1缩放。如果没有上述设置,当缩放窗口时,所有组件大小将不会更改。

第39、40行是创建“插入”按钮,当单击此按钮时会执行第8~16行的insertItem( )方法。在这个方法中,第9行是读取stateEntry的输入,第10行是读取cityEntry的输入。第12、13行是判断是否两栏中皆有输入,如果有一个栏中没有输入则返回不往下执行。第14行是插入stateEntry和cityEntry的输入。由于插入已经完成,所以第15行删除stateEntry文本框内容,第16行删除cityEntry文本框内容。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程