這兩段代碼是一個函數,現需要在第二個表格數據下面添加一個按鈕和輸入框,用來查詢第二個excel第8列相應數據顯示在表格中,跟這個一樣
时间: 2024-03-23 11:40:55 浏览: 51
2021-2022计算机二级等级考试试题及答案No.5143.docx
你可以在第二个表格下面添加一个 Frame,然后在该 Frame 中添加一个 Entry 和一个 Button,用于输入查询条件和触发查询操作。查询操作可以在 Button 的 command 属性中指定。在查询操作中,你需要获取输入框中的查询条件,然后遍历第二个表格的数据,找到符合条件的数据,并将其插入到表格中。具体的代码实现如下所示:
```python
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)
# 添加查询框和按钮
query_frame = tk.Frame(self.result_text2)
query_frame.pack(side=tk.TOP, fill=tk.X)
query_entry = tk.Entry(query_frame)
query_entry.pack(side=tk.LEFT, padx=5, pady=5)
query_button = tk.Button(query_frame, text='查询', command=lambda: self.query_data(query_entry.get(), table2))
query_button.pack(side=tk.LEFT, padx=5, pady=5)
# 清空第二个表格内容
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))
print(header)
# 创建表格
table = ttk.Treeview(self.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)
# 显示第二个表格
header = next(self.data_sheet.iter_rows(min_row=1, max_row=1, values_only=True))
print(header)
# 创建表格
table2 = ttk.Treeview(self.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)
def query_data(self, query_str, table):
# 清空表格内容
table.delete(*table.get_children())
# 获取查询条件
query_col = 8
# 遍历表格数据,找到符合条件的数据
for row in self.data_sheet.iter_rows(min_row=2, values_only=True):
if str(row[query_col-1]).startswith(query_str):
row_values = [str(cell) if cell is not None else "" for cell in row]
table.insert("", tk.END, values=row_values)
```
阅读全文