根據上面倆個代碼保留現在功能修改儅讀取excel工作表名生成的按鈕按表名相近的分組顯示,避免按鈕密集和顯示不完整
时间: 2024-02-11 14:08:50 浏览: 52
利用JAVA反射,读取数据库表名,自动生成对应实体类的操作
根据您的要求,您可以考虑以下步骤来对现有代码进行修改:
1. 读取所有工作表的名称,并将它们保存在一个列表中。
2. 对于每个工作表名称,生成一个相应的按钮,并将按钮添加到相应的分组中。
3. 将相似的工作表名称分组,例如名称中包含相同关键字或者相似的单词。
4. 将每个分组中的按钮进行整理和排列,以便它们可以在屏幕上完整地显示,并且不会太密集。
以下是一个可能的代码示例,可以实现您的要求(请注意,这只是一个示例,您需要根据您的具体需求进行适当的修改):
```python
import pandas as pd
import tkinter as tk
from difflib import SequenceMatcher
# 读取 Excel 文件中的所有工作表名称
df = pd.read_excel("example.xlsx", sheet_name=None)
sheet_names = list(df.keys())
# 创建一个 Tkinter 窗口,并在窗口中添加分组和按钮
root = tk.Tk()
# 定义分组的名称和关键字
group_names = ["Group 1", "Group 2", "Group 3"]
group_keywords = [["sheet1", "sheet2"], ["data", "info"], ["report", "summary"]]
# 创建分组和按钮,并将按钮添加到相应的分组中
for i, group_name in enumerate(group_names):
# 创建分组框架
group_frame = tk.Frame(root)
group_frame.pack(side="left", padx=10)
# 在分组框架中添加分组标签
group_label = tk.Label(group_frame, text=group_name)
group_label.pack(side="top", pady=5)
# 创建按钮列表
button_list = []
# 遍历所有工作表名称,找到属于当前分组的工作表
for sheet_name in sheet_names:
# 判断当前工作表名称是否包含分组关键字
match_ratio = max([SequenceMatcher(None, sheet_name.lower(), keyword.lower()).ratio() for keyword in group_keywords[i]])
if match_ratio > 0.5:
# 创建按钮,并将按钮添加到按钮列表
button = tk.Button(group_frame, text=sheet_name, width=15)
button_list.append(button)
# 对按钮列表进行整理和排列,以便它们可以在屏幕上完整地显示,并且不会太密集
for j, button in enumerate(button_list):
button.pack(side="top", pady=2)
# 添加一个空白标签,以便在分组之间添加一些间距
blank_label = tk.Label(group_frame, text="")
blank_label.pack(side="top", pady=10)
# 运行窗口程序
root.mainloop()
```
在这个示例代码中,我们首先使用 Pandas 库中的 read_excel() 函数读取 Excel 文件中的所有工作表名称,并将它们保存在一个列表中。然后,我们根据需要的分组关键字创建了三个分组,并在每个分组中创建了相应的按钮。对于每个工作表名称,我们使用 difflib 库中的 SequenceMatcher 类来判断其与分组关键字的相似度,并将其添加到相应的分组中。最后,我们对每个分组中的按钮进行整理和排列,以便它们可以在屏幕上完整地显示,并且不会太密集。
阅读全文