python寫一個gui窗口,這個界面有菜單欄,菜單有子菜單,每個子菜單連接一個指定的excel表,在窗口上方添加一個工具欄位,顯示上傳和關閉按鈕,儅用戶選擇任意一個子菜單時將相應讀取excel中所有工作表並生成按鈕顯示在窗口左側竪著排列為防止應工作表過多需要添加滑動條來顯示數據,在右右側創建一個文本框,儅用戶點擊生成的按鈕時,這個文本框就讀取相應excel工作表數據的一列所有數據并在每行數據前面添加一個下拉輸入框,顯示在文本框中,一樣需要滾動條來滾動數據

时间: 2023-12-06 19:05:30 浏览: 23
好的,以下是一个使用Python Tkinter模块编写的GUI窗口,满足您的要求。您需要将Excel文件放在与该Python文件相同的目录下,并将Excel文件名和工作表名称更新到代码中。 ```python import tkinter as tk from tkinter import ttk from tkinter import scrolledtext import openpyxl class ExcelReaderGUI: def __init__(self, master): self.master = master master.title("Excel Reader") # 创建菜单栏 self.menu_bar = tk.Menu(master) self.file_menu = tk.Menu(self.menu_bar, tearoff=0) self.file_menu.add_command(label="Open") self.file_menu.add_separator() self.file_menu.add_command(label="Exit", command=self.master.quit) self.menu_bar.add_cascade(label="File", menu=self.file_menu) # 创建工具栏 self.toolbar = ttk.Frame(master, padding=(5, 5, 5, 0)) self.toolbar.pack(side="top", fill="x") self.upload_button = ttk.Button(self.toolbar, text="Upload") self.upload_button.pack(side="left") self.close_button = ttk.Button(self.toolbar, text="Close", command=self.master.quit) self.close_button.pack(side="left", padx=(5, 0)) # 创建左侧的工作表按钮列表 self.sheet_buttons_frame = ttk.Frame(master) self.sheet_buttons_frame.pack(side="left", fill="y", padx=(5, 0)) self.sheet_buttons_scrollbar = ttk.Scrollbar(self.sheet_buttons_frame, orient="vertical") self.sheet_buttons_scrollbar.pack(side="right", fill="y") self.sheet_buttons_canvas = tk.Canvas(self.sheet_buttons_frame, yscrollcommand=self.sheet_buttons_scrollbar.set) self.sheet_buttons_canvas.pack(side="left", fill="y") self.sheet_buttons_scrollbar.config(command=self.sheet_buttons_canvas.yview) self.sheet_buttons_frame_inner = ttk.Frame(self.sheet_buttons_canvas) self.sheet_buttons_canvas.create_window((0, 0), window=self.sheet_buttons_frame_inner, anchor="nw") # 创建右侧的数据文本框 self.data_text_frame = ttk.Frame(master) self.data_text_frame.pack(side="left", fill="both", expand=True, padx=(5, 5), pady=(5, 5)) self.data_text_scrollbar = ttk.Scrollbar(self.data_text_frame, orient="vertical") self.data_text_scrollbar.pack(side="right", fill="y") self.data_text = scrolledtext.ScrolledText(self.data_text_frame, wrap="none", yscrollcommand=self.data_text_scrollbar.set) self.data_text.pack(side="left", fill="both", expand=True) self.data_text_scrollbar.config(command=self.data_text.yview) # 读取Excel文件 self.workbook = openpyxl.load_workbook("example.xlsx") self.sheet_names = self.workbook.sheetnames # 创建子菜单 self.sub_menu = tk.Menu(self.menu_bar, tearoff=0) for sheet_name in self.sheet_names: self.sub_menu.add_command(label=sheet_name, command=lambda sheet_name=sheet_name: self.show_sheet_data(sheet_name)) self.menu_bar.add_cascade(label="Sheets", menu=self.sub_menu) # 将菜单栏添加到主窗口 master.config(menu=self.menu_bar) def show_sheet_data(self, sheet_name): # 清空按钮和文本框 for button in self.sheet_buttons_frame_inner.winfo_children(): button.destroy() self.data_text.delete("1.0", tk.END) # 读取工作表数据 sheet = self.workbook[sheet_name] rows = sheet.iter_rows(values_only=True) # 在左侧创建工作表按钮 for row_index, row in enumerate(rows): button_text = row[0] if row[0] else f"Row {row_index + 1}" button = ttk.Button(self.sheet_buttons_frame_inner, text=button_text, command=lambda row=row: self.show_row_data(row)) button.pack(side="top", fill="x", pady=(0, 5)) # 更新Canvas高度和滚动条 self.sheet_buttons_frame_inner.update_idletasks() self.sheet_buttons_canvas.config(scrollregion=self.sheet_buttons_canvas.bbox("all")) def show_row_data(self, row): # 清空文本框 self.data_text.delete("1.0", tk.END) # 在文本框中显示行数据 for cell_value in row: input_box = ttk.Combobox(self.data_text, values=["Option 1", "Option 2", "Option 3"]) input_box.insert(0, cell_value) self.data_text.window_create(tk.END, window=input_box) self.data_text.insert(tk.END, " ") if __name__ == "__main__": root = tk.Tk() app = ExcelReaderGUI(root) root.mainloop() ``` 请注意,此代码仅用于演示用途,并且可能需要根据您的具体要求进行修改和优化。

相关推荐

最新推荐

recommend-type

python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例

级联的QMenu对象,要创建一个弹出菜单,Pyqt提供了createPopupMenu()函数,menuBar()函数用于返回主窗口的QMenuBar对象:addMenu()函数可以将菜单添加到菜单栏中,通过addAction()函数可以在菜单中进行添加...
recommend-type

Python实现保证只能运行一个脚本实例

主要介绍了Python实现保证只能运行一个脚本实例,本文直接给出实现代码,需要的朋友可以参考下
recommend-type

python分割一个文本为多个文本的方法

主要为大家详细介绍了python分割一个文本为多个文本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Python实现调用另一个路径下py文件中的函数方法总结

主要介绍了Python实现调用另一个路径下py文件中的函数方法,结合实例形式总结分析了Python针对不同文件夹中py文件调用操作的处理技巧与相关注意事项,需要的朋友可以参考下
recommend-type

python字符串替换第一个字符串的方法

主要介绍了python字符串替换第一个字符串的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

机器学习怎么将excel转为csv文件

机器学习是一种利用计算机算法和统计数据的方法来训练计算机来进行自动学习的科学,无法直接将excel文件转为csv文件。但是可以使用Python编程语言来读取Excel文件内容并将其保存为CSV文件。您可以使用Pandas库来读取Excel文件,并使用to_csv()函数将其保存为CSV格式。以下是代码示例: ```python import pandas as pd # 读取 Excel 文件 excel_data = pd.read_excel('example.xlsx') # 将数据保存为 CSV 文件 excel_data.to_csv('example.csv', index=
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。