A、ツリービュープレゼンテーション
ツリービューコンポーネントテーブルは、ツリー構造との組み合わせです。最初の列は、列のリストの後、ツリー構造です。各行が一つの項目を表し、アイテムが階層ツリーであってもよく、各アイテムは、子項目、対応するテキストラベルの名前を有しています。値の各行の値は、タプルの値で表されます。
5つの項目ラベルがあります:テキスト、イメージ、値、オープン、タグ。
第二に、パラメータ説明
1、ツリービューパラメータ:
パラメータ | 効果 |
---|---|
コラム | 値がリストです。リストには、各要素は、名前識別子列を表します。リストの長さは、列の長さです。 |
displaycolumns | リストには、列と順序を表す文字は、表示される要素のリストである、または使用「#ALLは、」すべてを表し |
高さ | データライン(注:この幅の部分が自動的に定義されているどのように多くの列に基づいています)を示します |
パディング | 充填、4つの要素の最大のリストです |
SELECTMODE | 行を選択する方法を定義します。「拡張」(Ctrlキー+マウスで)オプションのマルチライン、「ブラウズ」オプションは、1行が、あるある「なし」に変更することはできません、デフォルトの設定では、「拡張」されます |
公演 | これは、この表示部材の機能を示し、「ツリー」表示(単一ツリーパターン)の最初の列を表し、「見出し」は、他の列のうち、ディスプレイ、(シングルモードリスト)デフォルトは「ツリーの見出し」、すべての列です。「#0」(最初の列)が常に存在することに注意してください |
2、項目パラメータ:
オプション | 説明 |
---|---|
テキスト | ここでは木の名前。 |
画像 | マップの左側のツリーには、名前を追加します。 |
値 | ここでリスト構造は、列の値の割り当てられていないヌル値が列の長さが切り捨てられます超えて、各列の値。 |
開いた | 開または閉サブ項目表示を表すブール値 |
タグ | アイテムに関連付けられているタグ |
図3に示すように、タグのパラメータ
オプション | 説明 |
---|---|
前景 | 前景色 |
バックグラウンド | 背景色 |
フォント | フォント |
画像 | マップ |
三、TreeViewコントロールオプションのイベント、メソッド
選択された変化を表す<< TreeviewSelectは>>、発生しました。
<< >> TreeviewOpen、項目のオープン= Trueの発生時に
<< >> TreeviewClose、オープン=偽の項目が発生したときに
TIP:Treeview.focus()とTreeview.selection()が使用可能アイテムまたはアイテム。
メソッドのリスト:
バウンディングボックス(項目、カラム=なし)
項目(X、Y、幅、高さの範囲を返し )、 カラムカラムが指定されている場合項目が表示されていない場合、要素の範囲は、返され、NULLが返されます。
get_children(項目=なし)は
、すべてのアイテムのサブアイテムを返すアイテムは、返されたアイテムのルートが指定されていない場合、これは、サブ項目フォームのリストであります
set_children(項目、* newchildren)は、
アイテムの新しいサブ項目を設定します。あなたが設定した後、実際にすべてここに置き換えています
column(column, option=None, **kw)
给各列设置属性,或返回属性。
第一个column是列标识符
第二个option,如果不设置则返回所有属性的字典,如果设置则返回那个属性的值。
kw里的option有5个
id:只读属性,返回列名。
anchor:文字在cell里的对齐方式,标准的tk的anchor属性
minwidth: 值,单位是像素,列的最小宽度
stretch: 布尔值,表示列的宽度是否随整个部件的改动而变化。
width:列宽,单位是像素。
提示:如果要设置树状结构那列,用column=“#0”
delete(*items)
删除item及其子item
detach(*items)
断开item及其子item,这里的断开只是不显示,以后还可以链接起来。
exists(item)
返回True,如果item在树里。
focus(item=None)
如果不指定item,则返回当前获得焦点的item,如果指定item,则让该item获得焦点。若无则返回空值。
heading(column, option=None, **kw)
查询或修改指定列的标题选项
第一个column是列标识符
第二个option,如果不设置则返回所有属性的字典,如果设置则返回那个属性的值。
kw里的option有4个
text:列头名
image: 列头名右的图像
anchor:文字在heading里的对齐方式,标准的tk的anchor属性
command:点击列头的回调函数
insert(parent, index, iid=None, **kw)
创建新item并返回新创建item的项标识符。
parent:用item ID表示父item,或者‘’表示根item
index:数值int,或‘end’,表示item插入的位置
iid:item标识符,可自动生成
kw:看上面的Item Options介绍。
item(item, option=None, **kw)
查询或修改指定item的选项
selection(selop=None, items=None)
如果没指定selop则返回所有选中的items,列表形式,若selop指定了selection methods,则相应act。
set(item, column=None, value=None)
指定item,如果不设定column和value,则返回他们的字典,如果设定了column,则返回该column的value,如果value也设定了,则作相应更改。
四、代码示例
1、表格代码:
import tkinter as tk from tkinter import ttk window = tk.Tk() # 设置窗口大小 winWidth = 600 winHeight = 400 # 获取屏幕分辨率 screenWidth = window.winfo_screenwidth() screenHeight = window.winfo_screenheight() x = int((screenWidth - winWidth) / 2) y = int((screenHeight - winHeight) / 2) # 设置主窗口标题 window.title("TreeView参数说明") # 设置窗口初始位置在屏幕居中 window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y)) # 设置窗口图标 window.iconbitmap("./image/icon.ico") # 设置窗口宽高固定 window.resizable(0, 0) # 定义列的名称 columns = ("name", "gender", "age") tree = ttk.Treeview(window, show = "headings", columns = columns, selectmode = tk.BROWSE) # 设置表格文字居中 tree.column("name", anchor = "center") tree.column("gender", anchor = "center") tree.column("age", anchor = "center") # 设置表格头部标题 tree.heading("name", text = "姓名") tree.heading("gender", text = "性别") tree.heading("age", text = "年龄") # 设置表格内容 lists = [{"name": "yang", "gender": "男", "age": "18"}, {"name": "郑", "gender": "女", "age": "25"}] i = 0 for v in lists: tree.insert('', i, values = (v.get("name"), v.get("gender"), v.get("age"))) i += 1 tree.pack(expand = True, fill = tk.BOTH) # 获取当前点击行的值 def treeviewClick(event): # 单击 for item in tree.selection(): item_text = tree.item(item, "values") print(item_text) # 鼠标左键抬起 tree.bind('<ButtonRelease-1>', treeviewClick) # 鼠标选中一行回调 def selectTree(event): for item in tree.selection(): item_text = tree.item(item, "values") print(item_text) # 选中行 #tree.bind('<<TreeviewSelect>>', selectTree) window.mainloop()
2、树状代码:
import tkinter as tk from tkinter import ttk window = tk.Tk() # 设置窗口大小 winWidth = 600 winHeight = 400 # 获取屏幕分辨率 screenWidth = window.winfo_screenwidth() screenHeight = window.winfo_screenheight() x = int((screenWidth - winWidth) / 2) y = int((screenHeight - winHeight) / 2) # 设置主窗口标题 window.title("TreeView参数说明") # 设置窗口初始位置在屏幕居中 window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y)) # 设置窗口图标 window.iconbitmap("./image/icon.ico") # 设置窗口宽高固定 window.resizable(0, 0) # 定义列的名称 tree = ttk.Treeview(window, show = "tree") myid=tree.insert("",0,"中国",text="中国China",values=("1")) # ""表示父节点是根 myidx1=tree.insert(myid,0,"广东",text="中国广东",values=("2")) # text表示显示出的文本,values是隐藏的值 myidx2=tree.insert(myid,1,"江苏",text="中国江苏",values=("3")) myidy=tree.insert("",1,"美国",text="美国USA",values=("4")) myidy1=tree.insert(myidy,0,"加州",text="美国加州",values=("5")) # 鼠标选中一行回调 def selectTree(event): for item in tree.selection(): item_text = tree.item(item, "values") print(item_text) # 选中行 tree.bind('<<TreeviewSelect>>', selectTree) tree.pack(expand = True, fill = tk.BOTH) window.mainloop()
五、效果图