Skip to main content

TinUISheet

TinUI的高级表格控件。


使用

TinUISheet类

TinUISheet(
    ui:BasicTinUI, pos:tuple, width=300, height=300, minwidth=100, maxwidth=300,
    font=('微软雅黑', 12),
    fg='black', bg='white', itemfg='#1a1a1a', itembg='#f9f9f9', headbg='#f0f0f0',
    itemactivefg='#191919', itemactivebg='#f0f0f0',
    itemonfg='#191919', itemonbg='#e0e0e0',
    scrollcolor='#8a8a8a',
    headfont=('微软雅黑', 14),
    anchor='nw'
)
  • fg-文本颜色
  • bg-表格背景色
  • itemfg-数据文本颜色
  • itembg-数据背景色
  • headbg-表栏背景色
  • itemactivefg-响应鼠标整行文本颜色
  • itemactivebg-响应鼠标整行背景色
  • itemonfg-选中时文本颜色
  • itemonbg-选中时背景颜色
  • scrollcolor-滚动条颜色

[!note]

标准配色随时可能变动,建议自行指定颜色。

tinuisheet提供sheetlight和sheetdark两种样式配色。

[!tip]

通过TinUISheet.uid获取控件标识符,用于TinUI面板布局。

TinSheet支持普通面板布局和拓展拉伸布局。当置于ExpandPanel中时,表格外框会平铺面板区域,表格本体的原点仍为表格框左上角。

set_heads(heads)

设置整个表头文本。

对于heads中的一项,如果为dict,则有如下结构:

{
 'title': 'TITLE',
 'width': WIDTH-INT // 宽度
}

[!important]

若表格文本超出一行,则整个表头背景均会匹配最长的一个表头内容。此后的修改,除非为空表格,均不会调整表头高度。作为表单数据显示控件,不建议内容中存在换行字符。

set_head(index:int, head)

设置某个表头文本。

head可以为str,也可以同上为dict。

append_content(content)

加入一行数据。

[!important]

若表格内容超出一行,则整行背景均会匹配最长的一个内容。单独设置一个或一行表格,均不会改变高度。作为表单数据显示控件,不建议内容中存在换行字符。

content中的每一个元素,如果是字符串,则是常规文本,如果是字典,应当具备基本数据:{'text':TEXT, 'type':TYPE, ...},TYPE如下:

  • text,普通文本
  • check,复选框。另外接收command回调函数(默认None)、colors配色(默认TinUI标准配色)、val初始值(默认False)
  • button,圆角按钮。另外接收command回调函数、colors配色
  • edit,可编辑内容。另外接收command回调函数(接收修改后文本)、colors配色

set_contents(index:int, contents:list)

设置一行数据(从表头栏下一行开始记为0)。

set_content(index:int, index2:int, content:str)

设置index行index2列的数据。

get_selected(specific=False)

获取当前选中行中的所有文本列表,无则返回None。

当specific为True时,返回选中块的文本。

get_selected_item()

获取当前选中的画布元素。

get_selected_row()

获取选择行的位置。

get_selected_col()

获取选择列的位置。

get_nearby_item(pos:tuple)

获取离pos最近的画布元素列表。为了方便使用,这里的pos应当是控件坐标,TinUISheet会自动将其转换为画布坐标。

delete_row(index:int)

删除某行。

无法删除表头。

delete_col(index:int)

删除某列。

delete_all()

删除所有行。

bind(sequence:str, func, add:bool=False)

TinUISheet的事件绑定方法,同tkinter一般控件。返回funcid。

unbind(sequence:str, funcid:int=None)

事件解绑。


示例

from tkinter import Tk
from tinui import BasicTinUI, ExpandPanel, HorizonPanel

def test(_):
    tus.delete_col(0)
    tus.delete_row(0)
    tus.set_head(0, {'title':'α', 'width':200})
    tus.set_head(1, 'bbb')
    for _ in range(30):
        tus.append_content(['三','444','555',' ',' '])
    pass

root = Tk()
root.geometry("400x400")

ui = BasicTinUI(root)
ui.pack(expand=True, fill='both')
tus = TinUISheet(ui, (15,15), **sheetlight)

tus.set_heads(['a',{'title':'b','width':200},'c',' ',' ',' '])
	tus.append_content(['一',{'text':'222','type':'check'},{'text':'333', 'type':'button'},' ',' ',' '])
	tus.append_content(['四',{'text':'5\n55','type':'check','val':True},'666',' ',' ',' '])
	tus.append_content([{'text':'七','type':'edit','command':print},{'text':'888','type':'check'},'999',' ',' ',' '])
	tus.append_content(['万',{'text':'000','type':'check'},'111',' ',' ',' '])
	tus.append_content(['三',{'text':'444','type':'check'},'555',' ',' ',' '])
	tus.set_contents(1, ['Ⅳ',{'text':'⑤','type':'check'},'陆',' ',' ',' '])
tus.set_content(2, 2, '玖')
ui.after(2000, lambda: print(tus.get_selected(True)))

rp = ExpandPanel(ui)
hp = HorizonPanel(ui, spacing=10)
rp.set_child(hp)

ep = ExpandPanel(ui)
hp.add_child(ep, weight=1)
ep.set_child(tus.uid)

hp.add_child(ui.add_button((10,350), text='test', command=test)[-1], 100)

def update(e):
    rp.update_layout(5,5,e.width-5,e.height-5)
ui.bind('<Configure>',update)

root.mainloop()

若要使用更高级的tkinter表格功能,可以使用tksheet库。从add_ui获取画布控件,再将Sheet控件pack(fill='both',expand=True)即可,这样可以由TinUI负责Sheet的布局。

Metadata

Release files for tinuisheet 1.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tinuisheet 1.7.1
File Size Uploaded
tinuisheet-1.7.1.tar.gz 14.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tinuisheet 1.7.1
File Interpreter ABI Platform
tinuisheet-1.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 26.9 kB

Release files / tinuisheet-1.7.1.tar.gz

Download URL tinuisheet-1.7.1.tar.gz
Size 14.1 kB
Tags Source
SHA-256 checksum
How to use checksums
bef8803ed27af3c7429e2b3fc04531d64ec87afb27912989e8c6fcd71071768e
BLAKE2b-256 checksum
How to use checksums
95a30121ea8f59ff7dac9d8d4148f1921a11ba18f960a08c44b01cca76eab60a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release files / tinuisheet-1.7.1-py3-none-any.whl

Download URL tinuisheet-1.7.1-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e042336715631e5bffba1a88111300d987762a45696d8f3e11674d9724c1a439
BLAKE2b-256 checksum
How to use checksums
973f9623df9cb297783b8f18b287f98c124696a723f3610df7a4defcafcf8f50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.7.1 This release

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page