#第一個表格 self.table_frame = tk.Frame(self.result_text) self.table_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table_scroll_y = ttk.Scrollbar(self.table_frame, orient=tk.VERTICAL) table_scroll_y.pack(side=tk.RIGHT, fill=tk.Y) table_scroll_x = ttk.Scrollbar(self.table_frame, orient=tk.HORIZONTAL) table_scroll_x.pack(side=tk.BOTTOM, fill=tk.X) # 创建表格 self.columns = ("69料號", "工單", "領板數量", "待測數量", "待裁數量", "待送修數量", "實際數量", "差異", "盤點人", "確認者") self.tree = ttk.Treeview(self.table_frame, show="headings", columns=self.columns, yscrollcommand=table_scroll_y.set, xscrollcommand=table_scroll_x.set) table_scroll_y.config(command=self.tree.yview) table_scroll_x.config(command=self.tree.xview) for col in self.columns: self.tree.heading(col, text=col) self.tree.grid(row=0, column=2, rowspan=5)將這個代碼中grid 修改為pack
时间: 2024-03-29 10:40:01 浏览: 21
好的,你可以将最后一行代码中的 `grid` 改为 `pack`,如下所示:
```
self.tree.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
```
这样就可以将表格使用 `pack` 函数进行布局管理了。同时,你需要将 `grid` 函数所在的代码删除,否则会导致布局出现问题。
相关问题
def show_excel(self): # 清空第一个表格内容 self.result_text.delete(1.0, tk.END) # 清空第二个表格内容 if hasattr(self, 'table_frame2'): self.table_frame2.destroy() self.table_frame2 = tk.Frame(self.result_text2) self.table_frame2.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table_scroll_y2 = ttk.Scrollbar(self.table_frame2, orient=tk.VERTICAL) table_scroll_y2.pack(side=tk.RIGHT, fill=tk.Y) table_scroll_x2 = ttk.Scrollbar(self.table_frame2, orient=tk.HORIZONTAL) table_scroll_x2.pack(side=tk.BOTTOM, fill=tk.X) # 清空第二个表格内容 if hasattr(self, 'table_frame'): self.table_frame.destroy() self.table_frame = tk.Frame(self.result_text) self.table_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table_scroll_y = ttk.Scrollbar(self.table_frame, orient=tk.VERTICAL) table_scroll_y.pack(side=tk.RIGHT, fill=tk.Y) table_scroll_x = ttk.Scrollbar(self.table_frame, orient=tk.HORIZONTAL) table_scroll_x.pack(side=tk.BOTTOM, fill=tk.X) # 显示第一个表格 header = next(self.record_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) # 创建表格 table = ttk.Treeview(self.table_frame, columns=header, show='headings',
height=10, yscrollcommand=table_scroll_y.set, xscrollcommand=table_scroll_x.set)
# 设置表格样式
table.column("#0", width=0, stretch=tk.NO)
for i, col in enumerate(header):
table.column(col, width=100, stretch=tk.NO)
table.heading(col, text=col)
# 填充表格数据
for row in self.record_sheet.iter_rows(min_row=2, values_only=True):
table.insert("", tk.END, values=row)
# 显示第二个表格
header2 = next(self.record_sheet2.iter_rows(min_row=1, max_row=1, values_only=True)) # 创建表格
table2 = ttk.Treeview(self.table_frame2, columns=header2, show='headings', height=10, yscrollcommand=table_scroll_y2.set, xscrollcommand=table_scroll_x2.set)
# 设置表格样式
table2.column("#0", width=0, stretch=tk.NO)
for i, col in enumerate(header2):
table2.column(col, width=100, stretch=tk.NO)
table2.heading(col, text=col)
# 填充表格数据
for row in self.record_sheet2.iter_rows(min_row=2, values_only=True):
table2.insert("", tk.END, values=row)
# 显示表格
table.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
table_scroll_y.config(command=table.yview)
table_scroll_x.config(command=table.xview)
table2.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
table_scroll_y2.config(command=table2.yview)
table_scroll_x2.config(command=table2.xview)
self.result_text.config(state=tk.NORMAL)
self.result_text.insert(tk.END, "Excel表格读取完成!\n")
self.result_text.config(state=tk.DISABLED)
这段代码是用来读取 Excel 表格并在界面上显示的。其中,通过 Treeview 控件实现了表格的显示,使用 Scrollbar 实现了滚动条。同时,还支持同时显示两个表格。
def show_excel(self): # 清空文本框内容 self.result_text.delete(1.0, tk.END) self.result_text2.delete(1.0, tk.END) # 显示第一个表格 header = next(self.record_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) print(header) # 创建表格 Frame 和滚动条 table_frame = tk.Frame(self.result_text) table_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table_scroll_y = ttk.Scrollbar(table_frame, orient=tk.VERTICAL) table_scroll_y.pack(side=tk.RIGHT, fill=tk.Y) table_scroll_x = ttk.Scrollbar(table_frame, orient=tk.HORIZONTAL) table_scroll_x.pack(side=tk.BOTTOM, fill=tk.X) # 创建表格 table = ttk.Treeview(table_frame, columns=header, show='headings', yscrollcommand=table_scroll_y.set, xscrollcommand=table_scroll_x.set) table.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table_scroll_y.config(command=table.yview) table_scroll_x.config(command=table.xview) # 设置表格列的标题和宽度 for col in header: table.heading(col, text=col) table.column(col, width=80, anchor="center") # 显示第一个表格的内容 for row in self.record_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 table.insert("", tk.END, values=row_values)這個代碼在運行第二遍時會再次創建一個Frame 怎麽解決
根据你提供的代码,每次调用 `show_excel` 方法时,都会创建一个名为 `table_frame` 的表格 Frame。这可能会导致多次调用 `show_excel` 方法时创建多个表格 Frame。
你可以通过在方法的开头检查表格 Frame 是否已经存在来解决问题。如果表格 Frame 已经存在,则可以直接使用它,否则就创建一个新的。
具体代码如下所示:
```python
def show_excel(self):
# 清空文本框内容
self.result_text.delete(1.0, tk.END)
self.result_text2.delete(1.0, tk.END)
# 检查表格 Frame 是否已经存在
if hasattr(self, "table_frame"):
table_frame = self.table_frame
table_frame.pack_forget() # 先隐藏表格 Frame
else:
# 创建新的表格 Frame
table_frame = tk.Frame(self.result_text)
self.table_frame = table_frame # 将表格 Frame 保存到实例变量中
table_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
# 其他代码不变
```
这样,如果表格 Frame 已经存在,就直接使用它,并将其从父容器中隐藏。否则,就创建一个新的表格 Frame,并将其保存到实例变量中。这样就可以避免重复创建 Frame 的问题。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)