pythonUI

您所在的位置:网站首页 tkinter复选框的view pythonUI

pythonUI

2023-08-20 08:30| 来源: 网络整理| 查看: 265

Treeview使用技巧

上两天在搞编译原理的实验,小组一致决定用py,那就搞把,然后在设计前端的时候用的自带的tkinter,由于前端要画表格就上网找了一下,这里是我总结的一些个使用技巧。 有心追求更详细的使用技巧的可以参考官方文档:Treeview官方文档

基本使用

Treeview 可以画树形结构,也可以画表格,基本单位是item(项),在表格使用中你可以理解为一行,在树形结构中你可以理解为一个结点。

树形结构 from tkinter import ttk from tkinter import * # 初始化窗口window window = Tk() window.title('树结构') window.geometry('600x600') # 声明一个Treeview表,参数为parent tree = ttk.Treeview(window) # 此处为布局,fill字段为填充方向,可以选择X或者Y或者两者都BOTH,expand字段为布尔类型,对应fill是否填充 tree.pack(fill=BOTH, expand=YES) # insert(parent,index,iid=None,**kw) # insert 方法是向Treeview中添加结点,返回值为插入的item # 参数说明:parent为父节点, ''空串,代表根节点 # index为第几个结点,通常都是用0 或者 'end' 来放置结点到第一个或者最后一个位置 # iid可以显示确定也可以默认 # 关键字字段可以有text属性,用于前端显示文本 # 可以有vlaue属性, 这个字段在树型结构中可以不定义,应该是用于判断节点等价的(理解为hash) # 可以有open属性,这个字段代表节点默认打开还是关闭,bool型,缺省值为False item = tree.insert('',0,text='我是根节点',open=True) item1 = tree.insert(item,0,text='我是第一个子节点') item2 = tree.insert(item1,0,text='我是第一个子节点的第一个子节点') item3 = tree.insert(item1,'end',text='我是第一个子节点的最后一个子节点') # 显示窗口 window.mainloop()

你尽可以运行试试看看结果,只要仔细规划好所有节点的子节点,你可以轻易的画出一棵树来,这块没什么说的,都是按部就班的事情,你可以用树结构去画工程目录之类的语法分析树之类的 在这里插入图片描述

表型结构

在python的UI界面添加一张表,首先给出我的代码

from tkinter import ttk from tkinter import * # 初始化窗口window window = Tk() window.title('表结构') window.geometry('600x600') # 框架用于存放First集 frame = Frame(window) frame.pack(anchor=W, ipadx=10, side=LEFT, expand=True, fill=X) # fill 以对齐->加滚轮 content = Text(frame, width=0, height=30) content.pack(anchor=W, side=LEFT, expand=False) content.configure(background=window.cget('background'), highlightbackground=window.cget('background')) #列,表中每一列的题头 column = ['line','value'] # 声明一个Treview,参数(parent,height,columns,show) # 这里的声明我用了四个参数,父节点自不用说(属于),height字段为前端显示的行数 # columns字段为属性列表,每一个列为一个字符串所标记 # show 字段我最常用的就是‘headings’,不显示表的第一列(因为太宽,你尽可以去掉看看效果) treeview = ttk.Treeview(frame, height=19, columns=column, show='headings') # pack 布局,这是加滚轮所必须的布局,anchor方位(NSWE)可设八个方位, # ipad为组件之间的距离(我也没试出来效果),expand 扩展参数bool,fill为填充字段X,Y,BOTH treeview.pack(anchor=W, ipadx=100, side=LEFT, expand=True, fill=BOTH) # 每一列的具体设置用column函数,heading为显示指定列名,可以循环指定,你懂得 treeview.column(column[0], width=100, anchor='center') treeview.heading(column[0], text=column[0]) treeview.column(column[1], width=500, anchor='w') treeview.heading(column[1], text=column[1]) # 下一部分很重要,如果需要加滚轮的话直接按这个来 # ----vertical scrollbar------------ vbar1 = ttk.Scrollbar(treeview, orient=VERTICAL, command=treeview.yview) treeview.configure(yscrollcommand=vbar1.set) vbar1.pack(side=RIGHT, fill=Y) # ----horizontal scrollbar---------- hbar1 = ttk.Scrollbar(treeview, orient=HORIZONTAL, command=treeview.xview) treeview.configure(xscrollcommand=hbar1.set) hbar1.pack(side=BOTTOM, fill=X) # 不知道有没有用 window.rowconfigure(0, weight=1) window.columnconfigure(0, weight=1) for i in range(100): temp = treeview.insert('', index=count) # 新建行 treeview.set(temp, column=column[0], value=str(i)) treeview.set(temp, column=column[1],value='我是值') # 上三行可以用下一行代替,你懂得 # treeview.insert('',0,values=(str(i),'我是值')) window.mainloop()

下面加两个滚轮的部分一定要按我的这个来!!!

这也是我前面定义一个框架的原因,你或许注意到了我的表结构的父节点并不是window(也就是窗口),而是新定义了一个frame框架。

你或许跟我一样尝试过,正常去加一个垂直滚轮很正常,但是到水平滚轮的时候就出了很大问题,找了很多博客也没看到好的方法

最后多方总结尝试之后试出一个流程:首先定义一个框架出来,走pack布局,并以这个框架为父节点声明一个Treeview结构,正常操作。然后在加滚轮的时候定义两个滚轮的基础属性,并与Treeview双向绑定,详见代码部分的水平垂直滚轮。

这样还没完,这样添加进去你会发现他是一个小矩形,内容显示不全。所以我在向frame中加入Treeview之前先加入一个文本框来限定长度,然后加入Treeview的时候就会默认对齐文本框的长(别问我,我也不知道为什么)

下面是前端显示: 在这里插入图片描述

总结

代码尽可以去测试

欢迎广大程序员同行指正,或许有更好的加滚轮的方法请在评论区告知(还得加文本框改背景颜色感觉很别扭,但是找不到别的方法了)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3