這兩段代碼是一個函數,現需要在第二個表格數據下面添加一個按鈕和輸入框,用來查詢第二個excel第8列相應數據顯示在表格中,跟這個一樣
时间: 2024-03-23 21:40:55 浏览: 57
去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符
你可以在第二个表格下面添加一个 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)
```
阅读全文