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)
时间: 2024-03-28 11:40:01 浏览: 72
这段代码是用来显示 Excel 表格的数据的。首先,通过 Treeview 控件创建一个表格,然后设置滚动条并显示表格。接下来,设置表格列的标题和宽度,通过循环遍历列的标题来设置。最后,遍历 Excel 表格数据,将每行数据插入到表格中进行显示。需要注意的是,如果该行数据全为空值,则不会被插入到表格中进行显示。
相关问题
#第一個表格 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)
这段代码是用来创建一个表格的,其中用到了tkinter和ttk模块。表格中包含了多列数据,分别是“69料號”、“工單”、“領板數量”、“待測數量”、“待裁數量”、“待送修數量”、“實際數量”、“差異”、“盤點人”和“確認者”。表格中还包含了纵向和横向的滚动条,方便用户查看表格中的数据。最后使用for循环将表格中的每一列数据的列名设置为对应的文本。
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 的问题。
阅读全文