PySimpleGUI - 树形元素



树是一种分层数据结构,由一个或多个节点组成,每个节点可能有一个或多个子节点。节点的这种排列是在 TreeData 对象中完成的,该对象用作创建表格的数据参数。

首先,声明一个 TreeData 对象。

treedata = psg.TreeData()

使用 TreeData 类的 insert() 方法构建节点的层次结构。

TreeData.insert(parent_key, key, display_text, values)

要在树的第一级插入节点,请使用 "" 作为 parant_key。因此,树中的每个顶级节点都将具有父节点 = ""。要插入子节点,请将上一级节点的键作为其 parent_key。

例如,

insert("","MH", "Maharashtra", (175, 150, 200))

将在根级别插入一个键为 MH 的节点。

另一方面,以下命令

insert("MH", "MUM", "Mumbai", (100, 100,100))

将插入一个键为 MUM 的子节点。

TreeData 对象用于使用以下参数构建 Tree 对象:

序号 参数及描述
1 data

使用 TreeData 类表示的数据

2 headings

每列的各个标题列表

3 col_widths

各列的列宽列表

4 col0_width

第 0 列的大小

5 col0_heading

最左侧列标题中显示的文本

6 def_col_width

默认列宽

7 auto_size_columns

如果为 True,则列的大小由列的内容确定

8 select_mode

与表格元素相同

9 show_expanded

如果为 True,则树将最初显示所有节点完全展开

在下面的示例中,我们以树状结构显示了各州的城市列表

import PySimpleGUI as psg
psg.set_options(font=("Arial Bold",14))
treedata = psg.TreeData()
rootnodes=[
   ["","MH", "Maharashtra", 175, 150, 200],
   ["MH", "MUM", "Mumbai", 100, 100,100],
   ["MH", "PUN", "Pune", 30, 20, 40],
   ["MH", "NGP", "Nagpur", 45, 30, 60],
   ["","TEL", "Telangana", 120, 80, 125],
   ["TEL", "HYD", "Hyderabad", 75, 55, 80],
   ["TEL", "SEC", "Secunderabad", 25, 15, 30],
   ["TEL", "NZB", "Nizamabad", 20, 10, 15]
]
for row in rootnodes:
   treedata.Insert( row[0], row[1], row[2], row[3:])
tree=psg.Tree(data=treedata,
   headings=['Product A','Product B','Product C' ],
   auto_size_columns=True,
   select_mode=psg.TABLE_SELECT_MODE_EXTENDED,
   num_rows=10,
   col0_width=5,
   key='-TREE-',
   show_expanded=False,
   enable_events=True,
   expand_x=True,
   expand_y=True,
)
layout=[[tree]]
window=psg.Window("Tree Demo", layout, size=(715, 200), resizable=True)
while True:
   event, values = window.read()
   print ("event:",event, "values:",values)
   if event == psg.WIN_CLOSED:
      break

它将生成以下输出窗口:

Tree Element
pysimplegui_element_class.htm
广告