def show_excel(self): # 清空文本框内容 self.result_text.delete(1.0, tk.END) self.result_text2.delete(1.0, tk.END)# 显示第二个表格 header = next(self.data_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) print(header) # 创建表格 Frame 和滚动条 table_frame2 = tk.Frame(self.result_text2) table_frame2.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table_scroll_y2 = ttk.Scrollbar(table_frame2, orient=tk.VERTICAL) table_scroll_y2.pack(side=tk.RIGHT, fill=tk.Y) table_scroll_x2 = ttk.Scrollbar(table_frame2, orient=tk.HORIZONTAL) table_scroll_x2.pack(side=tk.BOTTOM, fill=tk.X) # 创建表格 table2 = ttk.Treeview(table_frame2, columns=header, show='headings', yscrollcommand=table_scroll_y2.set, xscrollcommand=table_scroll_x2.set) table2.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table_scroll_y2.config(command=table2.yview) table_scroll_x2.config(command=table2.xview) # 设置表格列的标题和宽度 for col in header: table2.heading(col, text=col) table2.column(col, width=80, anchor="center") # 显示第二个表格的内容 for row in self.data_sheet.iter_rows(min_row=2, values_only=True): row_values = [str(cell) if cell is not None else "" for cell in row] if all(not bool(cell) for cell in row_values): continue table2.insert("", tk.END, values=row_values)每次调用 show_excel 方法时,都会创建一个名为 table_frame 的表格 Frame。这可能会导致多次调用 show_excel 方法时创建多个表格 Frame。怎麽解決
时间: 2024-03-23 21:40:03 浏览: 78
可以在创建表格 Frame 之前,先判断该 Frame 是否已经存在,如果已经存在,则不需要再创建,直接使用已经存在的 Frame 即可。可以在初始化方法中创建一个成员变量 self.table_frame,然后在 show_excel 方法中判断该变量是否为 None,如果为 None,则创建表格 Frame,否则直接使用 self.table_frame。代码示例如下:
```python
def __init__(self):
...
self.table_frame = None
def show_excel(self):
...
if self.table_frame is None:
self.table_frame = tk.Frame(self.result_text2)
self.table_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
table_scroll_y2 = ttk.Scrollbar(self.table_frame, orient=tk.VERTICAL)
table_scroll_y2.pack(side=tk.RIGHT, fill=tk.Y)
table_scroll_x2 = ttk.Scrollbar(self.table_frame, orient=tk.HORIZONTAL)
table_scroll_x2.pack(side=tk.BOTTOM, fill=tk.X)
table2 = ttk.Treeview(self.table_frame, columns=header, show='headings',
yscrollcommand=table_scroll_y2.set, xscrollcommand=table_scroll_x2.set)
table2.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
table_scroll_y2.config(command=table2.yview)
table_scroll_x2.config(command=table2.xview)
...
```
阅读全文