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) table_frame = tk.Frame(self.result_text) table_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table = ttk.Treeview(table_frame, columns=header, show='headings') table.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) # 设置表格列的标题和宽度 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) header = next(self.data_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) print(header) table_frame = tk.Frame(self.result_text2) table_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) table = ttk.Treeview(table_frame, columns=header, show='headings') table.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) # 设置表格列的标题和宽度 for col in header: table.heading(col, text=col) table.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 table.insert("", tk.END, values=row_values)將這倆個顯示數據的框添水平滾動條和垂直滾動條放到各自右側和底部
时间: 2024-02-14 10:21:25 浏览: 69
你可以在创建每个表格的 Frame 时指定它们的宽度和高度,然后将它们放置在一个父容器中,父容器使用 pack 布局,并设置 side 参数为 tk.LEFT,fill 参数为 tk.BOTH,expand 参数为 True,这样它们就会排列在一起。然后,在每个表格中创建一个 ttk.Scrollbar 对象,设置 orient 参数为 tk.VERTICAL 或 tk.HORIZONTAL,然后将它们放置在父容器的右侧或底部,使用 pack 布局,并设置 side 参数为 tk.RIGHT 或 tk.BOTTOM,fill 参数为 tk.Y 或 tk.X,expand 参数为 False。最后,将每个表格的 yscrollcommand 或 xscrollcommand 参数设置为相应的滚动条的 set 方法,将每个滚动条的 command 参数设置为相应的表格的 yview 或 xview 方法。这样就可以为每个表格添加水平滚动条和垂直滚动条了。
相关问题
def show_excel(self): # 清空文本框中的内容 self.result_text.delete("1.0", tk.END) self.result_text2.delete("1.0", tk.END) ws = self.record_sheet rows = ws.values # 将内容插入到文本框中 text_box = tk.Text(self.result_text) for row in rows: for cell in row: text_box.insert(tk.END, str(cell) + '\t') text_box.insert(tk.END, '\n') text_box.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)修改顯示數據要跟表格一樣
要让显示的数据和表格对齐,您可以使用 `ljust()` 和 `rjust()` 方法来设置每个单元格的宽度,以确保所有单元格具有相同的宽度。例如,您可以将代码修改为:
```
text_box = tk.Text(self.result_text)
for row in rows:
for cell in row:
text_box.insert(tk.END, str(cell).ljust(20)) # 20是单元格的宽度
text_box.insert(tk.END, '\n')
text_box.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
```
这样,每个单元格都将具有相同的宽度,从而使显示的数据和表格对齐。您可以根据需要调整单元格的宽度。
def show_excel(self): # 清空文本框 self.result_text.delete('1.0', tk.END) self.result_text2.delete('1.0', tk.END) # 获取出入库明细表格数据 for row in self.record_sheet.values: for cell in row: if cell is None: self.result_text.insert(tk.END, ' ' * 10) else: self.result_text.insert(tk.END, str(cell).ljust(10)) self.result_text.insert(tk.END, '\n') # 获取库存明细表格数据 for row in self.data_sheet.values: for cell in row: if cell is None: self.result_text2.insert(tk.END, ' ' * 10) else: self.result_text2.insert(tk.END, str(cell).ljust(10)) self.result_text2.insert(tk.END, '\n')修改這個代碼,顯示數據時需要用表格裱起來,並置中
你可以使用第三方库 `prettytable` 来实现表格的展示,并且使用 `tkinter` 的布局函数来实现置中。
首先,你需要在文件头部导入 `prettytable` 库:
```python
from prettytable import PrettyTable
```
然后,你需要修改 `show_excel` 方法,使用 `PrettyTable` 创建表格,将数据添加到表格中,最后在文本框中显示表格。同时,你需要使用 `tkinter` 的布局函数 `place` 来实现文本框的置中。
下面是修改后的代码:
```python
def show_excel(self):
# 清空文本框
self.result_text.delete('1.0', tk.END)
self.result_text2.delete('1.0', tk.END)
# 创建出入库明细表格
record_table = PrettyTable()
record_table.field_names = ['日期', '商品编号', '商品名称', '操作类型', '数量', '单价']
for row in self.record_sheet.values:
record_table.add_row(row)
# 创建库存明细表格
data_table = PrettyTable()
data_table.field_names = ['商品编号', '商品名称', '库存数量', '库存金额']
for row in self.data_sheet.values:
data_table.add_row(row)
# 在文本框中显示表格
record_text = tk.Text(self.root, height=20, width=80, font=('Arial', 10))
record_text.place(relx=0.5, rely=0.3, anchor='center')
record_text.insert(tk.END, record_table)
data_text = tk.Text(self.root, height=20, width=80, font=('Arial', 10))
data_text.place(relx=0.5, rely=0.7, anchor='center')
data_text.insert(tk.END, data_table)
```
其中,`relx=0.5, rely=0.3, anchor='center'` 表示将文本框的中心点置于窗口的中心点,`height=20, width=80` 表示文本框的高度和宽度。你可以根据实际情况进行调整。
阅读全文