tk.Label(self.container1, text="查找内容:").grid(row=6, column=3, padx=5, pady=5, sticky="w") search_entry = tk.Entry(self.container1) search_entry.grid(row=6, column=3, padx=5, pady=5, sticky="we") # 创建 Button 控件用于触发查找操作 tk.Button(self.container1, text="查找", command=lambda: search_data(search_entry.get())).grid(row=6, column=2, padx=5, pady=5, sticky="e") def search_data(search_text): # 清空第二个表格中的数据 for child in treeview2.get_children(): treeview2.delete(child) # 在 Excel 中查找数据,并将符合条件的行添加到第二个表格中 for row in self.data_sheet.iter_rows(min_row=2, values_only=True): if search_text in str(row[7]): row_values = [str(cell) if cell is not None else "" for cell in row] treeview2.insert("", tk.END, values=row_values)在這個輸入框添加一個回車觸發查詢按鈕
时间: 2024-02-14 09:15:48 浏览: 28
你可以在search_entry控件中绑定回车键事件,当用户在该控件中按下回车键时,自动触发查找操作。代码如下:
```
# 定义回车键事件处理函数
def on_enter(event):
search_data(search_entry.get())
# 绑定回车键事件到search_entry控件
search_entry.bind('<Return>', on_enter)
```
这样,当用户在search_entry控件中按下回车键时,就会自动触发search_data函数,实现查找操作。
相关问题
class InventoryApp: def __init__(self, master): self.master = master master.title("物料进出库统计") # 创建容器,用于放置表格和文本框 self.container = tk.Frame(master,width=0.2) self.container.grid(row=0, column=0, padx=5, pady=5) # 创建容器,用于放置表格和文本框 self.container1 = tk.Frame(master) self.container1.grid(row=0, column=15, padx=5, pady=5) # 创建标签和文本框 self.label1 = tk.Label(self.container, text="物料名称:") self.label1.grid(row=0, column=0, padx=5, pady=5) self.material_name = tk.Entry(self.container, width=20) self.material_name.grid(row=0, column=1, padx=5, pady=5) self.label2 = tk.Label(self.container, text="数量:") self.label2.grid(row=1, column=0, padx=5, pady=5) self.material_qty = tk.Entry(self.container, width=20) self.material_qty.grid(row=1, column=1, padx=5, pady=5) # 创建进出库按钮 self.in_button = tk.Button(self.container, text="进库", command=self.in_stock) self.in_button.grid(row=2, column=0, padx=5, pady=5) self.out_button = tk.Button(self.container, text="出库", command=self.out_stock) self.out_button.grid(row=2, column=1, padx=5, pady=5) # 添加显示excel内容的按钮 self.show_button = tk.Button(self.container, text="显示Excel内容", command=self.show_excel) self.show_button.grid(row=3, column=0, columnspan=2, padx=5, pady=5) # 创建标签用于显示工作表名称 self.record_label = tk.Label(self.container1, text="記錄") self.record_label.grid(row=0, column=2, padx=5, pady=5) self.data_label = tk.Label(self.container1, text="數據") self.data_label.grid(row=2, column=2, padx=5, pady=5) # 打开Excel文件 self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"]將這段代碼中第一個容器放到窗口左側,第2個容器放到窗口右側
可以将第一个容器的列改为0,第二个容器的列改为15,这样就可以分别放在窗口的左侧和右侧了。修改后的代码如下:
```
class InventoryApp:
def __init__(self, master):
self.master = master
master.title("物料进出库统计")
# 创建容器,用于放置表格和文本框
self.container = tk.Frame(master, width=0.2)
self.container.grid(row=0, column=0, padx=5, pady=5)
# 创建容器,用于放置表格和文本框
self.container1 = tk.Frame(master)
self.container1.grid(row=0, column=15, padx=5, pady=5)
# 创建标签和文本框
self.label1 = tk.Label(self.container, text="物料名称:")
self.label1.grid(row=0, column=0, padx=5, pady=5)
self.material_name = tk.Entry(self.container, width=20)
self.material_name.grid(row=0, column=1, padx=5, pady=5)
self.label2 = tk.Label(self.container, text="数量:")
self.label2.grid(row=1, column=0, padx=5, pady=5)
self.material_qty = tk.Entry(self.container, width=20)
self.material_qty.grid(row=1, column=1, padx=5, pady=5)
# 创建进出库按钮
self.in_button = tk.Button(self.container, text="进库", command=self.in_stock)
self.in_button.grid(row=2, column=0, padx=5, pady=5)
self.out_button = tk.Button(self.container, text="出库", command=self.out_stock)
self.out_button.grid(row=2, column=1, padx=5, pady=5)
# 添加显示excel内容的按钮
self.show_button = tk.Button(self.container, text="显示Excel内容", command=self.show_excel)
self.show_button.grid(row=3, column=0, columnspan=2, padx=5, pady=5)
# 创建标签用于显示工作表名称
self.record_label = tk.Label(self.container1, text="記錄")
self.record_label.grid(row=0, column=2, padx=5, pady=5)
self.data_label = tk.Label(self.container1, text="數據")
self.data_label.grid(row=2, column=2, padx=5, pady=5)
# 打开Excel文件
self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
self.record_sheet = self.wb["記錄"]
self.data_sheet = self.wb["數據"]
```
# 创建标签和下拉框 self.label1 = ttk.Label(self.container, text="PEGA-料号:") self.label1.grid(row=0, column=0, padx=5, pady=5) self.material_name = tk.ttk.Combobox(self.container, values=[]) self.material_name.grid(row=0, column=1, padx=5, pady=5)這段代碼中下拉輸入框需要修改為帶有記憶功能的,儅用戶輸入一次后,下一次輸入一半就可以跳出完整的
建议您可以在代码中添加一个字典,用于存储用户输入的值和对应的完整值,当用户输入一半时,程序可以根据字典中的记录自动匹配出完整的值。
以下是修改后的代码示例:
```
# 创建标签和下拉框
self.label1 = ttk.Label(self.container, text="PEGA-料号:")
self.label1.grid(row=0, column=0, padx=5, pady=5)
self.material_dict = {} # 添加一个字典存储用户输入的值和对应的完整值
def on_select(event): # 定义一个回调函数,用于自动匹配完整值
value = event.widget.get()
for key in self.material_dict:
if value.lower() in key.lower():
event.widget.set(self.material_dict[key])
break
self.material_name = tk.ttk.Combobox(self.container, values=[], postcommand=lambda:self.material_name.configure(values=list(self.material_dict.values())))
self.material_name.grid(row=0, column=1, padx=5, pady=5)
self.material_name.bind('<<ComboboxSelected>>', on_select)
# 在相应的事件中更新字典
def update_dict(event):
value = event.widget.get()
self.material_dict[value] = "完整值" # 将完整值替换为实际的完整值
event.widget.set(value)
self.material_name.bind('<Return>', update_dict)
self.material_name.bind('<FocusOut>', update_dict)
```
在上述代码中,我们添加了一个名为`self.material_dict`的字典,用于存储用户输入的值和对应的完整值。当用户输入一半时,程序会根据字典中的记录自动匹配出完整的值,并将其填充到下拉框中。在用户输入完整值后,程序会将其存储到字典中,以便下次匹配时使用。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![apk](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)