將excel回調函數顯示内容在文本框中修改為已表格數據顯示,每個數據内容在表格居中,并且只有顯示功能沒有寫入功能
时间: 2024-03-06 22:46:38 浏览: 19
好的,可以使用 `tkinter.ttk` 模块中的 `Treeview` 控件来显示表格数据。具体代码如下:
```python
import tkinter as tk
from tkinter import ttk
import openpyxl
class InventoryApp:
def __init__(self, master):
self.master = master
master.title("物料进出库统计")
# 创建标签和文本框
self.label1 = tk.Label(master, text="物料名称:")
self.label1.grid(row=0, column=0, padx=5, pady=5)
self.material_name = tk.Entry(master)
self.material_name.grid(row=0, column=1, padx=5, pady=5)
self.label2 = tk.Label(master, text="数量:")
self.label2.grid(row=1, column=0, padx=5, pady=5)
self.material_qty = tk.Entry(master)
self.material_qty.grid(row=1, column=1, padx=5, pady=5)
# 创建进出库按钮
self.in_button = tk.Button(master, text="进库", command=self.in_stock)
self.in_button.grid(row=2, column=0, padx=5, pady=5)
self.out_button = tk.Button(master, text="出库", command=self.out_stock)
self.out_button.grid(row=2, column=1, padx=5, pady=5)
# 添加显示excel内容的按钮
self.show_button = tk.Button(master, text="显示Excel内容", command=self.show_excel)
self.show_button.grid(row=3, column=0, padx=5, pady=5)
# 打开Excel文件
self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
self.record_sheet = self.wb["記錄"]
self.data_sheet = self.wb["數據"]
# 显示excel内容的回调函数
def show_excel(self):
# 创建一个新窗口
top = tk.Toplevel(self.master)
# 创建表格用于显示第一个工作表
columns1 = [col[0] for col in self.record_sheet.iter_cols()]
treeview1 = ttk.Treeview(top, columns=columns1, show="headings")
treeview1.grid(row=0, column=0, padx=5, pady=5)
# 设置表格列的标题和宽度
for col in columns1:
treeview1.heading(col, text=col)
treeview1.column(col, width=100, anchor="center")
# 显示第一个工作表的内容
for row in self.record_sheet.iter_rows(values_only=True):
treeview1.insert("", tk.END, values=row)
# 创建表格用于显示第二个工作表
columns2 = [col[0] for col in self.data_sheet.iter_cols()]
treeview2 = ttk.Treeview(top, columns=columns2, show="headings")
treeview2.grid(row=1, column=0, padx=5, pady=5)
# 设置表格列的标题和宽度
for col in columns2:
treeview2.heading(col, text=col)
treeview2.column(col, width=100, anchor="center")
# 显示第二个工作表的内容
for row in self.data_sheet.iter_rows(values_only=True):
treeview2.insert("", tk.END, values=row)
```
这样,就将之前的文本框改成了表格的形式,每个数据都居中显示,并且只有查看功能,没有写入功能。