python寫一個gui窗口,這個界面有菜單欄,菜單有子菜單,每個子菜單連接一個指定的excel表,在窗口上方添加一個工具欄位,顯示上傳和關閉按鈕,儅用戶選擇任意一個子菜單時將相應讀取excel中所有工作表並生成按鈕顯示在窗口左側竪著排列為防止應工作表過多需要添加滑動條來顯示數據,在右右側創建一個文本框,儅用戶點擊生成的按鈕時,這個文本框就讀取相應excel工作表數據的一列所有數據并在每行數據前面添加一個下拉輸入框,顯示在文本框中,一樣需要滾動條來滾動數據
时间: 2023-12-06 20:05:12 浏览: 66
好的,您可以使用 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 工作表,并在左侧显示所有工作表的按钮。当用户点击一个按钮时,程序会读取相应工作表的所有数据,并在右侧显示一个文本框,其中每行数据前面都有一个下拉框。用户可以选择下拉框中的值,并将数据上传到数据库。程序还包括上传和关闭按钮。
阅读全文