excel学习库

excel表格_excel函数公式大全_execl从入门到精通

自定义数据集(excel),AI 制图关键词生成器

自定义数据集(excel),AI 制图关键词生成器,python编写。

1.数据集(excel)文件

文件遵循下图的格式,红框中目录名称与单个工作表名称能对应即可,顺序无关紧要。工作表第一行为表头(可随意),程序默认从第二行开始读取数据。

2.python代码

import tkinter as tk

from tkinter import ttk

import pandas as pd

import functools

import pyperclip

import tkinter.messagebox as messagebox

def button_clicked(button):

button_text = button.cget('text')

text = text_area.get('1.0', 'end-1c').replace(button_text + ',', '')

# 定义一个状态变量,初始为默认状态

if not hasattr(button, 'state'):

button.state = 'active'

if button.state == 'active':

# 如果按钮状态为活动状态,则将文本填充到text_area并设置背景色和文字颜色

text_area.insert(tk.END, button_text + ',')

button.config(fg="#ffffff",bg="#082386")

button.state = 'default'

else:

# 如果按钮状态为默认状态,则恢复默认样式

text_area.delete('1.0', 'end-1c')

text_area.delete('1.0', 'end')

text_area.insert(tk.END, text)

button.config(fg="#0c1d36",bg="#f0f0f0")

button.state = 'active'

def create_message_box(message):

messagebox = tk.Toplevel(window)

messagebox.geometry("200x80")

messagebox.title("提示")

label = tk.Label(messagebox, text=message)

label.pack(pady=20)

messagebox.after(1500, messagebox.destroy)

messagebox.update_idletasks()

x = (window.winfo_width() - messagebox.winfo_reqwidth()) // 2

y = (window.winfo_height() - messagebox.winfo_reqheight()) // 2

messagebox.geometry("+%d+%d" % (window.winfo_rootx() + x, window.winfo_rooty() + y))

def clear_text():

text_area.delete('1.0', 'end')

# 将所有按钮的背景色设置为默认颜色

for button in button_list:

button.config(fg="#0c1d36",bg="#f0f0f0")

create_message_box("文本已清空")

def copy_text():

text = text_area.get('1.0', 'end-1c')

pyperclip.copy(text)

create_message_box("文本已复制到剪贴板")

def create_buttons(tab_frame, button_data):

# 创建Canvas控件作为按钮区域的父容器

canvas = tk.Canvas(tab_frame, width=800, height=500)

canvas.pack(side="left", fill="both", expand=True)

# 创建滚动条

scrollbar = ttk.Scrollbar(tab_frame, orient="vertical", command=canvas.yview)

scrollbar.pack(side="right", fill="y")

# 设置Canvas控件的滚动条属性

canvas.configure(yscrollcommand=scrollbar.set)

canvas.bind('<Configure>', lambda e: canvas.configure(scrollregion=canvas.bbox("all")))

button_frame = tk.Frame(canvas)

canvas.create_window((0,0), window=button_frame, anchor="nw")

buttons_per_row = 8 # 每行按钮的数量

button_width = 19 # 按钮的宽度

row_counter = 0

col_counter = 0

for row in button_data:

if isinstance(row, str) and row.strip() != '':

button = tk.Button(button_frame, text=row, width=button_width,fg="#0c1d36",bg="#f0f0f0")

button_list.append(button) # 将每个按钮加入到 button_list 中

button["command"] = functools.partial(button_clicked, button)

button.grid(row=row_counter, column=col_counter, padx=2, pady=2, sticky='W')

col_counter += 1

if col_counter == buttons_per_row:

row_counter += 1

col_counter = 0

# 创建窗口

window = tk.Tk()

# 设置窗口大小和位置

window.geometry("1200x600")

button_list = [] # 初始化button_list

file_path='data.xlsx'

# 创建上部分的框架

frame_top = tk.Frame(window, height=120)

frame_top.pack(fill="x")

# 在上部分框架中添加文本域

text_area = tk.Text(frame_top, height=5, fg="#ffdf13", bg="#0c1d36", font=("Helvetica", 11), exportselection=False)

text_area.pack(fill="both", expand=True)

# 在文本域中插入文字

text_area.insert(tk.END, "")

# 创建上部分的框架

frame_mid = tk.Frame(window, height=120)

frame_mid.pack()

# 创建清空按钮

clear_button = tk.Button(frame_mid, text='清空',fg="#ffffff", bg="#082386", font=("Helvetica", 11),width=12, command=clear_text)

clear_button.pack(side="left",padx=2, pady=2)

# 创建复制按钮

copy_button = tk.Button(frame_mid, text='复制', fg="#ffffff", bg="#082386", font=("Helvetica", 11), width=12, command=copy_text)

copy_button.pack(padx=2, pady=2)

# 创建下部分的框架

frame_bottom = tk.Frame(window)

frame_bottom.pack()

# 在下部分框架中创建一个Tab控件

tab_control = ttk.Notebook(frame_bottom)

# 创建选项卡

data = pd.read_excel(file_path, sheet_name="目录", header=None)

tabs = data.iloc[1:, 0].values.tolist()

for tab in tabs:

tab_frame = ttk.Frame(tab_control)

tab_control.add(tab_frame, text=tab)

# 用选项卡的值去data.xlsx文件找到对应的表

tab_table = pd.read_excel(file_path, sheet_name=tab)

# 找到对应的表后,取表的第一行数据作为新选项卡的选项显示出来

options = tab_table.columns.values.tolist()

option_control = ttk.Notebook(tab_frame)

for option in options:

option_frame = ttk.Frame(option_control)

option_control.add(option_frame, text=option)

# 在option_frame中调用create_buttons函数创建按钮

first_row = tab_table.columns.get_loc(option)

option_table = pd.read_excel(file_path, sheet_name=tab, usecols=[first_row])

button_data = option_table.iloc[:, 0].tolist()

create_buttons(option_frame, button_data)

option_control.pack(expand=True, fill="both")

tab_control.pack(expand=True, fill="both")

# 自定义选项卡样式

style = ttk.Style()

style.configure("TNotebook.Tab", font=("Helvetica", 10), padding=[5, 5, 5, 5],width=900,tabposition='nw',)

style.map("TNotebook.Tab", background=[("selected", "#003780")])

# 运行窗口

window.mainloop()

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接