Skip to main content

tinui高级树状图

Project description

TinUITreeview

TinUI的高级树状图控件。相比于TinUI原生treeview,给拓展提供对树状图的增删改功能,以及更细化的操作实现。


使用

TinUITreeItem

树状图元素,用来表示树中的一个节点。这是一个抽象元素,包含如下信息:

  • text - 节点显示文本
  • back - 背景矩形画布 id(也是 items 字典的键)
  • te - 文字画布 id
  • sign - 展开/收起三角图标画布 id(叶节点为 None)
  • parent - 亲节点的弱引用ReferenceType[TinUITreeItem],根节点为 None
  • children - 子 TinUITreeItem 列表
  • checkable - 是否为可选值
  • check_state - 值选中状态:0=未选,1=全选,2=半选
  • checkitems - (outline, fill, text),均为文本元素

不过,使用者并不需要在意这些细节,只需要知道这是节点元素即可。以上信息可作为属性直接获取。

TinUITreeView

TinUITreeView(
    master:BasicTinUI,
    pos: tuple,
    fg="#1a1a1a",
    bg="#f3f3f3",
    onfg="#1a1a1a",
    onbg="#eaeaea",
    oncolor="#3041d8",
    signcolor="#8a8a8a",
    width=200,
    height=300,
    font="微软雅黑 12",
    content=(
        ("one", ("1", "2", "3")),
        "two",
        ("three", ("a", ("b", ("b1", "b2", "b3")), "c")),
        "four",
    ),
    anchor="nw",
    command=None,
)

参数与TinUI原生treeview一致。

[!NOTE]

另外,tinuitreeview提供tvlighttvdark两种样式配色

[!tip]

通过TinUITreeView.uid获取控件标识符,用于TinUI面板布局。其对面板布局的响应与原生treeview一致。

get_selected()

返回选中的TinUITreeItem

select_node

def select_node(self, values:List[str]) -> bool:

选择节点。

  • values - 以文本形式描述选择节点的路径

最终选到则返回true。途中所有可选中节点均会被展开。

add_node

def add_node(
    self,
    text: str,
    parent: TinUITreeItem|None = None,
    checkable: bool = False,
    check_state: bool = False,
) -> TinUITreeItem:

添加节点。

  • parent=None -> 追加到根级
  • parent=item -> 作为 item 的子节点追加
  • checkable - 是否值可选
  • check_state - 是否值选中

返回新建的TinUITreeItem

remove_node(item:TinUITreeItem)

删除节点及其后代。如果被删除点为亲节点最后一个节点,则亲节点变为叶子节点。

rename_node(item:TinUITreeItem, new_text:str)

重命名节点。

closs_all() / open_all()

同原生treeview

check_change(item: TinUITreeItem, state=None)

更改item的值选状态。

状态直接传递传递给子节点,可能会影响亲节点的值选状态。

bind(sequence=None, func=None, add=None)

控件事件绑定,返回funcid

unbind(sequence, funcid=None)

控件事件解绑。


示例

# 导入必要模块...

def test(path):
    print("选中路径:", " > ".join(n.text for n in path))

root = tk.Tk()
tinui = BasicTinUI(root)
tinui.pack(fill='both',expand=True)
tree = TinUITreeView(tinui, (50, 50), command=test)

# 增
new_item = tree.add_node("新节点", checkable=True) # 添加到根
child = tree.add_node("子节点", parent=new_item)  # 添加到指定节点下

# 删
tree.remove_node(child) # 同时删除所有后代,父节点若变为空则自动降级为叶节点

# 改
tree.rename_node(new_item, "renamed")

# 查
# selected = tree.get_selected() # 返回 TinUITreeItem 或 None
# print("当前选中:", selected)

# 展开/折叠
tree.close_all()
root.after(2000, tree.open_all) # 2秒后展开所有节点

rp = ExpandPanel(tinui, tree.uid)
def on_resize(e):
    rp.update_layout(5, 5, e.width-5, e.height-5)
tinui.bind("<Configure>", on_resize)

root.mainloop()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tinuitreeview-1.4.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tinuitreeview-1.4.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file tinuitreeview-1.4.0.tar.gz.

File metadata

  • Download URL: tinuitreeview-1.4.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for tinuitreeview-1.4.0.tar.gz
Algorithm Hash digest
SHA256 2afd61c1d2677278997d1f921c5f61d0b6ce7f55594872c1d9ac7d996295f98d
MD5 e5ba3ec8c517421cd175f749d09a8303
BLAKE2b-256 8b12f2d07f14f8c21dea8c7db70e1b1372f35c6d10c4496d656ae66c60fae6d3

See more details on using hashes here.

File details

Details for the file tinuitreeview-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: tinuitreeview-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for tinuitreeview-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b2c479a058cd863e85baeabefd90ca3a23ec55f124ab612d422a0c3f4532d8fe
MD5 669ed29433fab269dc2a7d11a7f84925
BLAKE2b-256 53fb66d9e7e7f30a7560c8922ed0a88dae3ecef62421d4f5e07a495d1a4739fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page