python寫一個gui窗口,這個界面有菜單欄,菜單有子菜單,每個子菜單連接一個指定的excel表,在窗口上方添加一個工具欄位,顯示上傳和關閉按鈕,儅用戶選擇任意一個子菜單時將相應讀取excel中所有工作表並生成按鈕顯示在窗口左側竪著排列為防止應工作表過多需要添加滑動條來顯示數據,在右邊創建一個文本框,儅用戶點擊生成的按鈕時,這個文本框就顯示相應excel工作表數據的一列所有數據并在每行數據前面添加一個下拉輸入框,顯示在文本框中,一樣需要滾動條來滾動數據
时间: 2023-12-06 15:05:12 浏览: 60
好的,这是一个涉及到Excel文件读取、GUI界面设计和数据处理的问题,需要使用Python的一些库来实现。我推荐使用Tkinter作为GUI库,同时使用pandas作为Excel文件读取库和数据处理库,下面是实现该界面的代码:
```python
import tkinter as tk
from tkinter import messagebox, filedialog
import pandas as pd
class MainWindow:
def __init__(self):
self.root = tk.Tk()
self.root.title("Excel数据处理")
self.root.geometry("800x600")
self.create_menu()
self.create_toolbar()
self.create_scrollbar()
self.create_textbox()
self.root.mainloop()
def create_menu(self):
menubar = tk.Menu(self.root)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="打开", command=self.open_file)
filemenu.add_separator()
filemenu.add_command(label="退出", command=self.root.quit)
menubar.add_cascade(label="文件", menu=filemenu)
self.root.config(menu=menubar)
def create_toolbar(self):
toolbar = tk.Frame(self.root)
upload_button = tk.Button(toolbar, text="上传")
upload_button.pack(side="left", padx=5, pady=5)
close_button = tk.Button(toolbar, text="关闭")
close_button.pack(side="left", padx=5, pady=5)
toolbar.pack(side="top", fill="x")
def create_scrollbar(self):
self.scrollbar = tk.Scrollbar(self.root)
self.scrollbar.pack(side="right", fill="y")
def create_textbox(self):
self.textbox = tk.Text(self.root, yscrollcommand=self.scrollbar.set, wrap="none")
self.textbox.pack(side="left", fill="both", expand=True)
self.scrollbar.config(command=self.textbox.yview)
def open_file(self):
file_path = filedialog.askopenfilename()
if file_path:
self.df = pd.read_excel(file_path, sheet_name=None)
# 清空文本框
self.textbox.delete("1.0", tk.END)
# 创建工作表按钮
self.sheet_buttons = []
for sheet_name in self.df.keys():
sheet_button = tk.Button(self.root, text=sheet_name, command=lambda sheet_name=sheet_name: self.show_sheet_data(sheet_name))
sheet_button.pack(side="top", fill="x", padx=5, pady=5)
self.sheet_buttons.append(sheet_button)
def show_sheet_data(self, sheet_name):
self.textbox.delete("1.0", tk.END)
# 获取工作表数据
sheet_data = self.df[sheet_name]
# 创建下拉框
self.comboboxes = []
for i in range(sheet_data.shape[0]):
combobox = tk.ttk.Combobox(self.textbox, state="readonly", values=["Yes", "No"])
combobox.current(0)
combobox.grid(row=i, column=0, padx=5, pady=5)
self.comboboxes.append(combobox)
# 创建数据显示
for i in range(sheet_data.shape[0]):
for j in range(sheet_data.shape[1]):
tk.Label(self.textbox, text=str(sheet_data.iloc[i, j])).grid(row=i, column=j+1, padx=5, pady=5)
if __name__ == "__main__":
MainWindow()
```
这段代码实现了一个窗口,其中有菜单栏、工具栏、滚动条和文本框等控件。菜单栏中有“打开”和“退出”两个选项,点击“打开”会弹出文件选择对话框,选择一个Excel文件后会读取其数据并生成工作表按钮,这些按钮会显示在左侧,文本框会显示相应的Excel数据。此外,工具栏中还有“上传”和“关闭”两个按钮,点击“上传”可以上传数据到服务器,点击“关闭”可以关闭程序。当用户点击某个工作表按钮时,会显示相应的工作表数据,每行数据前面都会有一个下拉框,用户可以选择其中的一个选项。
阅读全文