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

时间: 2023-12-06 21:05:12 浏览: 13
好的,您可以使用 Python 的 Tkinter 模块来创建 GUI 界面。下面是一个简单的代码示例,可以满足您的要求: ``` python import tkinter as tk import pandas as pd class ExcelReaderGUI: def __init__(self, master): self.master = master self.master.title("Excel Reader") # 创建菜单栏 self.menu_bar = tk.Menu(self.master) self.file_menu = tk.Menu(self.menu_bar, tearoff=0) self.file_menu.add_command(label="Open", command=self.open_file) self.menu_bar.add_cascade(label="File", menu=self.file_menu) # 创建工具栏 self.tool_bar = tk.Frame(self.master) self.upload_button = tk.Button(self.tool_bar, text="Upload", command=self.upload_data) self.close_button = tk.Button(self.tool_bar, text="Close", command=self.master.quit) self.upload_button.pack(side=tk.LEFT, padx=2, pady=2) self.close_button.pack(side=tk.LEFT, padx=2, pady=2) self.tool_bar.pack(side=tk.TOP, fill=tk.X) # 创建滚动条和文本框 self.scrollbar = tk.Scrollbar(self.master) self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y) self.text = tk.Text(self.master, wrap=tk.NONE, yscrollcommand=self.scrollbar.set) self.text.pack(side=tk.LEFT, fill=tk.BOTH, expand=1) self.scrollbar.config(command=self.text.yview) # 初始化数据 self.data = None def open_file(self): # 打开文件对话框选择 Excel 文件 file_path = tk.filedialog.askopenfilename(filetypes=[("Excel files", "*.xls *.xlsx")]) if file_path: self.data = pd.read_excel(file_path, sheet_name=None) self.display_sheets() def display_sheets(self): # 清空文本框和滚动条 self.text.delete(1.0, tk.END) self.scrollbar.set(0, 1) # 显示所有工作表的按钮 for sheet_name in self.data: button = tk.Button(self.text, text=sheet_name, command=lambda name=sheet_name: self.display_data(name)) button.pack(side=tk.TOP, fill=tk.X) def display_data(self, sheet_name): # 清空文本框和滚动条 self.text.delete(1.0, tk.END) self.scrollbar.set(0, 1) # 显示工作表的数据 sheet = self.data[sheet_name] for row in sheet.iterrows(): row_data = [str(cell) for cell in row[1]] self.add_dropdown(row_data) def add_dropdown(self, row_data): # 在文本框中添加下拉框和行数据 frame = tk.Frame(self.text) frame.pack(side=tk.TOP, fill=tk.X) var = tk.StringVar() var.set(row_data[0]) dropdown = tk.OptionMenu(frame, var, *row_data) dropdown.pack(side=tk.LEFT, padx=2, pady=2) label = tk.Label(frame, text=" ".join(row_data)) label.pack(side=tk.LEFT, padx=2, pady=2) def upload_data(self): # 上传数据到数据库 pass root = tk.Tk() app = ExcelReaderGUI(root) root.config(menu=app.menu_bar) root.mainloop() ``` 这个代码使用 Pandas 来读取 Excel 文件,Tkinter 来创建 GUI 界面。当用户选择一个子菜单时,程序会读取相应的 Excel 工作表,并在左侧显示所有工作表的按钮。当用户点击一个按钮时,程序会读取相应工作表的所有数据,并在右侧显示一个文本框,其中每行数据前面都有一个下拉框。用户可以选择下拉框中的值,并将数据上传到数据库。程序还包括上传和关闭按钮。

相关推荐

最新推荐

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

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

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