python寫一個gui窗口一個菜單欄,菜單欄名字叫PA,這個PA連接一個excel,儅用戶點擊PA時把這個excel中所有的工作表名打印在窗口中生成按鈕靠窗口左邊竪著放,再在下方生成日志框,儅點擊這些按鈕時可以讀取相應工作表中的一列數據並在數據後面添加下拉輸入框放在日志框中再根據數據内容在日志框中自動添加滑動條,
时间: 2023-10-02 07:13:58 浏览: 102
以下是实现该功能的示例代码:
```python
import tkinter as tk
from tkinter import ttk
import pandas as pd
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("PA")
self.geometry("800x600")
# 创建菜单栏
menubar = tk.Menu(self)
self.config(menu=menubar)
# 创建“PA”菜单
pa_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="PA", menu=pa_menu)
# 添加“打开Excel”选项
pa_menu.add_command(label="打开Excel", command=self.open_excel)
# 创建按键框架和日志框
self.button_frame = tk.Frame(self)
self.button_frame.pack(side=tk.LEFT, fill=tk.Y)
self.log_text = tk.Text(self, height=10)
self.log_text.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
# 初始化工作表名列表
self.sheet_names = []
def open_excel(self):
# 弹出文件选择对话框,选择Excel文件
file_path = tk.filedialog.askopenfilename()
# 加载Excel文件
try:
excel_file = pd.ExcelFile(file_path)
except Exception as e:
self.log_text.insert(tk.END, "打开Excel文件失败:" + str(e) + "\n")
return
# 获取工作表名列表
self.sheet_names = excel_file.sheet_names
# 绘制工作表名按键
for sheet_name in self.sheet_names:
button = ttk.Button(self.button_frame, text=sheet_name, command=lambda name=sheet_name: self.load_data(name))
button.pack(side=tk.TOP, fill=tk.X)
def load_data(self, sheet_name):
# 读取指定工作表数据
try:
data = pd.read_excel(file_path, sheet_name=sheet_name)
except Exception as e:
self.log_text.insert(tk.END, "读取工作表数据失败:" + str(e) + "\n")
return
# 清空日志框和按键框架
self.log_text.delete('1.0', tk.END)
for widget in self.button_frame.winfo_children():
widget.destroy()
# 绘制下拉框和滑动条
for i, row in data.iterrows():
label = ttk.Label(self.log_text, text=str(row))
label.pack(side=tk.TOP, fill=tk.X)
combobox = ttk.Combobox(self.log_text, values=["选项1", "选项2", "选项3"])
combobox.pack(side=tk.TOP, fill=tk.X)
scrollbar = tk.Scrollbar(self.log_text, orient=tk.HORIZONTAL)
scrollbar.pack(side=tk.TOP, fill=tk.X)
self.log_text.window_create(tk.END, window=label)
self.log_text.window_create(tk.END, window=combobox)
self.log_text.window_create(tk.END, window=scrollbar)
self.log_text.insert(tk.END, "\n")
if __name__ == "__main__":
app = App()
app.mainloop()
```
在该示例代码中,我们使用了 Tkinter 模块来创建 GUI 窗口和菜单栏,并使用 Pandas 模块来读取 Excel 文件数据。在菜单栏中添加了“打开Excel”选项,单击该选项后会弹出文件选择对话框,用户可以选择要打开的 Excel 文件。在选择文件后,程序会读取 Excel 文件中所有的工作表名,并将它们作为按键显示在窗口的左侧。当用户单击某个工作表名按键时,程序会读取相应工作表中的所有行数据,并在日志框中生成带有下拉框和滑动条的每一行数据。
阅读全文