python tkinter库使用表格控件

本文将介绍如何在tkinter库中使用表格控件。

这个表格允许用户编辑数值、调整大小也可以进行右键操作。
如果你需要一个不允许用户修改、编辑表格,请看作者主页内下一篇文章。(文章链接:tkinter库使用表格(列表)控件

准备工作

tkinter库不内置表格控件,需要下载tkintertable库

官方介绍

先来看看PyPl介绍的tkintertable:
网址:https://pypi.org/project/tkintertable/
描述:
This package allows interactive spreadsheet-style tables to be added into a Tkinter application. Tkinter is the standard GUI toolkit for Python. A sample application using these classes is included in the distribution. Now works with Python 3. A sample application using these classes is included in the distribution.

简单翻译后:
此包允许将交互式电子表格样式的表添加到 Tkinter 应用程序中。 Tkinter 是 Python 的标准 GUI 工具包。使用这些类的示例应用程序 包含在分发中。现在适用于 Python 3。分发中包括使用这些类的示例应用程序。

安装库(windows系统)

首先需要打开计算机的命令提示符(cmd)或终端(Windows PowerShell),输入一下命令:

pip install tkintertable

等待安装完成,就可以编写代码了。

如果下载失败或者下载过慢可以尝试切换下载源:
来自 github:

pip install -e git+https://github.com/dmnfarrell/tkintertable.git#egg=tkintertable

使用方法

默认表格

首先需要先导入这个库:

import tkinter as tk
import tkintertable

或者:

import tkinter as tk
from tkintertable import TableCanvas, TableModel

(也可以不用“as”,但需要把下文中所有“tk”(小写)替换成“tkinter”)

然后创建一个窗口

import tkinter as tk
import tkintertable

# 定义窗口对象
window = tk.Tk()

# 给窗口命名
window.title("事例窗口")

# 控件创建操作
"""
此处进行下一步操作
"""

# 开启主循环
window.mainloop()

在以上代码中提示的位置,进行下一步:

# 创建一个容器
tframe = tk.Frame(window)

# 布局容器,个人喜欢用place布局
tframe.place(x=0, y=0)

# 创建一个表格控件
table = tkintertable.TableCanvas(tframe)

# 显示表格
table.show()

如果就这样运行这个程序,会显示出一个默认表格。
默认表格

你可以编辑这个表格,也可以修改参数,以下是tkintertable.TableCanvas()的参数的名称及作用(容器除外):

参数作用接受值
cellwidth每列宽度一个整数值
rowheight每行宽度一个整数值
rowheaderwidth行头宽度一个整数值
thefont设置字体一个元组或一个整数值
rowselectedcolor选中的单元格的显示颜色一个类似"red"、"yellow"的值

注意:以上为作者已知的参数及作用,如有疑惑,请私信作者!

添加行、列

当然,默认表格可能无法满足客户的要求,所以我们也可以添加行或列:

# 添加列,列需要命名
table.addColumn('add')

# 添加行,行不需要命名
table.addRow()

注意:添加行或列只能在show()之后再进行,否则会报类似以下的错误:

Traceback (most recent call last):
  File "D:\Users\xxx\Desktop\python file\002.py", line 17, in <module>
    table.addColumn('add')
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\tkintertable\Tables.py", line 516, in addColumn
    self.redrawTable()
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\tkintertable\Tables.py", line 374, in redrawTable
    self.redrawVisible(event, callback)
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\tkintertable\Tables.py", line 360, in redrawVisible
    self.tablecolheader.redraw()
    ^^^^^^^^^^^^^^^^^^^
AttributeError: 'TableCanvas' object has no attribute 'tablecolheader'

添加列:
添加列窗口

添加行:
添加行窗口

提示:添加的行或列如果超出了窗口设定的宽度或高度,会自动在此控件的右侧或下面创建一个滚动条。

添加单元格数据

也可以给某个单元格添加数据:

# 添加数据
table.model.setValueAt('数据1', 0, 0)
table.model.setValueAt('数据2', 1, 0)
table.model.setValueAt('数据3', 2, 1)

此操作既可以在show()之前用,也可以在show()之后用。

注意:表格在初始时有十行五列,所以行索引在0-9,列索引在0-4。如果要超出的话,就会提示错误。(索引从0开始)

插入数据窗口

此处作者设置了thefont参数:(‘微软雅黑’, 10)所以可能和你的电脑上显示的不太一样。

其他

此控件允许用户编辑数值、调整大小也可以进行右键操作,以下为展示图:
编辑数值:
编辑数值展示图

调整大小展示图:
调整大小展示图

右键菜单展示图:
右键菜单展示图

本文到此就结束啦,如果对你有帮助记得点个赞哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值