python寫一個gui窗口,這個界面有菜單欄,菜單有子菜單,每個子菜單連接一個指定的excel表,在窗口上方添加一個工具欄位,顯示上傳和關閉按鈕,儅用戶選擇任意一個子菜單時將相應讀取excel中所有工作表並生成按鈕顯示在窗口左側竪著排列為防止應工作表過多需要添加滑動條來顯示數據,在右右側創建一個文本框,儅用戶點擊生成的按鈕時,這個文本框就讀取相應excel工作表數據的一列所有數據并在每行數據前面添加一個下拉輸入框,顯示在文本框中,一樣需要滾動條來滾動數據
时间: 2023-12-06 08:05:44 浏览: 62
用python写一个带有gui界面的密码生成器
以下是使用Python的tkinter模块编写GUI窗口的示例代码,其中包含了菜单栏、工具栏、滚动条、文本框等组件的创建和使用。你需要将代码中的excel文件路径和sheet名称改为你需要的文件路径和sheet名称。
```python
import tkinter as tk
from tkinter import ttk
import openpyxl
class ExcelViewer:
def __init__(self, master):
self.master = master
master.title("Excel Viewer")
# 创建菜单栏
menubar = tk.Menu(master)
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label="Open", command=self.open_file)
file_menu.add_separator()
file_menu.add_command(label="Exit", command=master.quit)
menubar.add_cascade(label="File", menu=file_menu)
master.config(menu=menubar)
# 创建工具栏
toolbar = tk.Frame(master, bd=1, relief=tk.RAISED)
upload_button = tk.Button(toolbar, text="Upload", command=self.upload_file)
upload_button.pack(side=tk.LEFT, padx=2, pady=2)
close_button = tk.Button(toolbar, text="Close", command=master.quit)
close_button.pack(side=tk.LEFT, padx=2, pady=2)
toolbar.pack(side=tk.TOP, fill=tk.X)
# 创建左侧滚动条和工作表按钮列表
self.sheet_list = tk.Frame(master)
scrollbar = tk.Scrollbar(self.sheet_list, orient=tk.VERTICAL)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
self.sheet_buttons = tk.Frame(self.sheet_list)
self.sheet_buttons.pack(side=tk.LEFT, fill=tk.Y)
scrollbar.config(command=self.sheet_buttons.yview)
self.sheet_buttons.config(yscrollcommand=scrollbar.set)
# 创建右侧滚动条和文本框
self.text_frame = tk.Frame(master)
scrollbar2 = tk.Scrollbar(self.text_frame, orient=tk.VERTICAL)
scrollbar2.pack(side=tk.RIGHT, fill=tk.Y)
self.text_box = tk.Text(self.text_frame, wrap=tk.NONE, yscrollcommand=scrollbar2.set)
self.text_box.pack(side=tk.LEFT, fill=tk.BOTH)
scrollbar2.config(command=self.text_box.yview)
def open_file(self):
# 打开Excel文件并获取所有工作表名称
self.wb = openpyxl.load_workbook("your_excel_file_path.xlsx")
self.sheet_names = self.wb.sheetnames
# 清空工作表按钮列表
for widget in self.sheet_buttons.winfo_children():
widget.destroy()
# 创建工作表按钮
for sheet_name in self.sheet_names:
button = tk.Button(self.sheet_buttons, text=sheet_name, command=lambda sheet_name=sheet_name:self.show_sheet(sheet_name))
button.pack(side=tk.TOP, fill=tk.X)
def show_sheet(self, sheet_name):
# 清空文本框
self.text_box.delete("1.0", tk.END)
# 获取工作表数据
sheet = self.wb[sheet_name]
data = sheet.values
# 获取列名称
columns = next(data)
# 创建下拉框和文本框列表
dropdowns = []
text_boxes = []
for i, column in enumerate(columns):
# 创建下拉框
dropdown = ttk.Combobox(self.text_box, values=list(set(row[i] for row in data)), state="readonly", width=10)
dropdowns.append(dropdown)
self.text_box.window_create(tk.INSERT, window=dropdown)
self.text_box.insert(tk.INSERT, " ")
# 创建文本框
text_box = tk.Entry(self.text_box, width=20)
text_boxes.append(text_box)
self.text_box.window_create(tk.INSERT, window=text_box)
self.text_box.insert(tk.INSERT, "\t")
# 填充下拉框和文本框
for row in data:
for i, cell in enumerate(row):
text_boxes[i].insert(tk.END, str(cell))
text_boxes[i].insert(tk.END, "\t")
self.text_box.insert(tk.END, "\n")
def upload_file(self):
pass # 实现上传文件的功能
root = tk.Tk()
app = ExcelViewer(root)
root.mainloop()
```
希望这个示例代码能够帮助到你。
阅读全文