python寫一個gui窗口一個菜單欄,菜單欄名字叫PA,這個PA連接一個excel,儅用戶點擊PA時把這個excel中所有的工作表名打印在窗口中生成按鈕靠窗口左邊竪著放,再在下方生成日志框,儅點擊這些按鈕時可以讀取相應工作表中的一列所有的數據后並根據數據内容在後面添加下拉輸入框將他們放在日志框中再根據數據内容在日志框中自動添加滑動條,
时间: 2023-11-30 17:03:26 浏览: 29
以下是实现该功能的Python代码:
```python
import tkinter as tk
from tkinter import scrolledtext
from tkinter import ttk
import pandas as pd
class App:
def __init__(self, master):
self.master = master
master.title("PA")
master.geometry("600x400")
# 创建菜单栏
menu_bar = tk.Menu(master)
master.config(menu=menu_bar)
# 添加菜单项
file_menu = tk.Menu(menu_bar)
file_menu.add_command(label="Open", command=self.open_excel)
menu_bar.add_cascade(label="PA", menu=file_menu)
# 创建工作表按钮
self.sheet_buttons = []
self.sheet_frame = tk.Frame(master)
self.sheet_frame.pack(side="left", fill="y")
# 创建日志框
self.log = scrolledtext.ScrolledText(master, height=10)
self.log.pack(side="bottom", fill="both", expand=True)
def open_excel(self):
# 打开Excel文件
file_path = tk.filedialog.askopenfilename()
if not file_path.endswith(".xlsx"):
self.log.insert(tk.END, "请选择一个Excel文件!\n")
return
try:
self.df = pd.read_excel(file_path, sheet_name=None)
except Exception as e:
self.log.insert(tk.END, "打开Excel文件失败!\n{}\n".format(e))
return
# 清除旧的工作表按钮
for button in self.sheet_buttons:
button.destroy()
self.sheet_buttons = []
# 添加新的工作表按钮
for sheet_name in self.df.keys():
button = ttk.Button(self.sheet_frame, text=sheet_name, command=lambda sheet_name=sheet_name: self.load_data(sheet_name))
button.pack(side="top", pady=5)
self.sheet_buttons.append(button)
def load_data(self, sheet_name):
# 读取工作表数据
try:
data = self.df[sheet_name].iloc[:, 0].tolist()
except Exception as e:
self.log.insert(tk.END, "读取工作表数据失败!\n{}\n".format(e))
return
# 清空日志框
self.log.delete("1.0", tk.END)
# 添加下拉框
for i, item in enumerate(data):
label = tk.Label(self.log, text=item)
label.grid(row=i, column=0, sticky="w")
combo = ttk.Combobox(self.log, values=data)
combo.current(i)
combo.grid(row=i, column=1, sticky="we")
# 添加滑动条
scrollbar = tk.Scrollbar(self.log)
scrollbar.grid(row=0, column=2, rowspan=len(data), sticky="ns")
for i in range(len(data)):
self.log.grid_rowconfigure(i, weight=1)
self.log.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=self.log.yview)
root = tk.Tk()
app = App(root)
root.mainloop()
```
该程序使用Tkinter库创建一个GUI窗口,其中包含一个菜单栏和一个日志框。当用户点击菜单栏中的“Open”选项时,程序会打开一个Excel文件,并将其中所有工作表的名称显示为按钮,放置在窗口左侧的垂直方向上。当用户点击这些按钮时,程序会读取相应工作表中的数据,并在日志框中添加下拉框和滑动条。用户可以在下拉框中选择数据,并使用滑动条浏览日志框中的所有内容。