python寫一個gui窗口一個菜單欄,菜單欄名字叫PA,這個PA連接一個指定的excel,儅用戶點擊PA時把這個excel中所有的工作表名打印在窗口中生成按鈕靠窗口左邊竪著放,再在下方生成日志框,儅點擊這些按鈕時可以讀取相應工作表中的一列所有的數據后並根據數據内容在後面添加下拉輸入框將他們放在日志框中再根據數據内容在日志框中自動添加滑動條,
时间: 2023-11-30 07:03:26 浏览: 27
以下是一个基本的实现,可以根据需要进行修改:
```python
import tkinter as tk
from tkinter import ttk
import pandas as pd
class ExcelReader:
def __init__(self, excel_file):
self.excel_file = excel_file
self.workbook = pd.read_excel(excel_file, sheet_name=None)
def get_sheet_names(self):
return list(self.workbook.keys())
def get_column_data(self, sheet_name, column_name):
return self.workbook[sheet_name][column_name].tolist()
class App:
def __init__(self, master):
self.master = master
self.master.title("PA")
self.master.geometry("500x500")
# Create menu bar
menubar = tk.Menu(self.master)
self.master.config(menu=menubar)
# Create File menu
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label="Open", command=self.open_excel_file)
file_menu.add_separator()
file_menu.add_command(label="Exit", command=self.master.quit)
menubar.add_cascade(label="File", menu=file_menu)
# Create frame for buttons
button_frame = tk.Frame(self.master)
button_frame.pack(side="left", fill="y")
# Create frame for logs
log_frame = tk.Frame(self.master)
log_frame.pack(side="bottom", fill="both", expand=True)
# Create scrollbar for logs
log_scrollbar = ttk.Scrollbar(log_frame)
log_scrollbar.pack(side="right", fill="y")
# Create text widget for logs
self.log_text = tk.Text(log_frame, yscrollcommand=log_scrollbar.set)
self.log_text.pack(side="left", fill="both", expand=True)
log_scrollbar.config(command=self.log_text.yview)
# Initialize ExcelReader
self.excel_reader = None
def open_excel_file(self):
file_path = tk.filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])
if file_path:
self.excel_reader = ExcelReader(file_path)
sheet_names = self.excel_reader.get_sheet_names()
self.create_sheet_buttons(sheet_names)
def create_sheet_buttons(self, sheet_names):
for i, sheet_name in enumerate(sheet_names):
button = tk.Button(self.master, text=sheet_name, command=lambda name=sheet_name: self.read_sheet(name))
button.pack(in_=button_frame, side="top", pady=5, padx=10)
def read_sheet(self, sheet_name):
if not self.excel_reader:
return
column_names = self.excel_reader.get_column_data(sheet_name, "")
for column_name in column_names:
column_data = self.excel_reader.get_column_data(sheet_name, column_name)
# Create label for column name
label = tk.Label(self.log_text, text=column_name)
self.log_text.window_create("end", window=label)
# Create dropdown for column data
dropdown = ttk.Combobox(self.log_text, values=column_data)
self.log_text.window_create("end", window=dropdown)
# Create scrollbar for dropdown
scrollbar = ttk.Scrollbar(self.log_text, orient="horizontal", command=dropdown.xview)
self.log_text.window_create("end", window=scrollbar)
# Configure dropdown to use scrollbar
dropdown.configure(xscrollcommand=scrollbar.set)
# Add new line to log text
self.log_text.insert("end", "\n")
# Scroll to end of log
self.log_text.see("end")
root = tk.Tk()
app = App(root)
root.mainloop()
```
这个程序会创建一个窗口,其中包含一个菜单栏和一个左侧的按钮区域。当用户点击菜单栏中的“Open”选项时,会打开一个文件对话框,用户可以选择要打开的Excel文件。如果用户选择了一个文件,程序会使用Pandas库读取这个Excel文件,并在窗口左侧的按钮区域中创建一个按钮列表,每个按钮对应一个工作表。
当用户单击按钮时,程序会读取相应的工作表,并在窗口底部的日志框中添加一列下拉輸入框,每个框包含工作表中一列的數據。程序也会自动添加滑動條。