python寫一個gui窗口,這個界面有菜單欄,菜單有子菜單,每個子菜單連接一個指定的excel表,在窗口上方添加一個工具欄位,顯示上傳和關閉按鈕,儅用戶選擇任意一個子菜單時將相應讀取excel中所有工作表並生成按鈕顯示在窗口左側竪著排列為防止應工作表過多需要添加滑動條來顯示數據,在右右側創建一個文本框,儅用戶點擊生成的按鈕時,這個文本框就讀取相應excel工作表數據的一列所有數據并在每行數據前面添加一個下拉輸入框,顯示在文本框中,一樣需要滾動條來滾動數據
时间: 2023-12-06 19:05:30 浏览: 91
好的,这是一个比较复杂的GUI应用,需要使用Python的Tkinter库来实现。以下是一个简单的实现方案:
```python
import tkinter as tk
import pandas as pd
class ExcelViewer:
def __init__(self, master):
self.master = master
self.master.title("Excel Viewer")
# 创建菜单栏
self.menu_bar = tk.Menu(self.master)
self.master.config(menu=self.menu_bar)
# 创建文件菜单
self.file_menu = tk.Menu(self.menu_bar, tearoff=0)
self.file_menu.add_command(label="Open", command=self.open_file)
self.file_menu.add_command(label="Exit", command=self.master.quit)
self.menu_bar.add_cascade(label="File", menu=self.file_menu)
# 创建工具栏
self.tool_bar = tk.Frame(self.master, relief=tk.RAISED, borderwidth=1)
self.tool_bar.pack(side=tk.TOP, fill=tk.X)
self.upload_button = tk.Button(self.tool_bar, text="Upload", command=self.open_file)
self.upload_button.pack(side=tk.LEFT)
self.close_button = tk.Button(self.tool_bar, text="Close", command=self.master.quit)
self.close_button.pack(side=tk.LEFT)
# 创建滚动条
self.scrollbar = tk.Scrollbar(self.master)
self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
# 创建工作表按钮列表
self.sheet_buttons = []
# 创建文本框和滚动条
self.text_box = tk.Text(self.master, yscrollcommand=self.scrollbar.set)
self.text_box.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)
self.scrollbar.config(command=self.text_box.yview)
def open_file(self):
file_path = tk.filedialog.askopenfilename(filetypes=[("Excel Files", "*.xlsx;*.xls")])
if file_path:
# 清空文本框和工作表按钮列表
self.text_box.delete("1.0", tk.END)
for button in self.sheet_buttons:
button.destroy()
self.sheet_buttons = []
# 读取Excel文件
excel_file = pd.ExcelFile(file_path)
# 创建工作表按钮
for sheet_name in excel_file.sheet_names:
button = tk.Button(self.master, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name))
button.pack(side=tk.LEFT, padx=5)
self.sheet_buttons.append(button)
def show_sheet(self, sheet_name):
# 清空文本框
self.text_box.delete("1.0", tk.END)
# 读取工作表数据
excel_file = pd.ExcelFile(file_path)
sheet_data = excel_file.parse(sheet_name)
# 创建下拉框和数据行
for index, row in sheet_data.iterrows():
combobox = tk.ttk.Combobox(self.text_box, values=list(sheet_data.columns), width=10)
combobox.insert(0, row[0])
combobox.pack(side=tk.LEFT, padx=5)
self.text_box.window_create(tk.INSERT, window=combobox)
self.text_box.insert(tk.INSERT, "\t")
self.text_box.insert(tk.INSERT, "\t".join([str(cell) for cell in row[1:]]))
self.text_box.insert(tk.INSERT, "\n")
if __name__ == "__main__":
root = tk.Tk()
app = ExcelViewer(root)
root.mainloop()
```
这个应用程序使用Tkinter库创建了一个窗口,其中包含一个菜单栏、一个工具栏、一个滚动条、一个工作表按钮列表和一个文本框。当用户点击菜单栏中的“Open”按钮或工具栏中的“Upload”按钮时,程序会弹出一个对话框,让用户选择要打开的Excel文件。然后,程序会在窗口左侧创建一个按钮列表,每个按钮都对应一个工作表。当用户点击一个工作表按钮时,程序会在右侧文本框中显示该工作表的所有数据,并在每行数据前面添加一个下拉框,以允许用户选择该行数据的某个单元格的列名。如果文本框中的数据太多,程序会自动添加滚动条来使用户能够滚动查看所有数据。
阅读全文