# 打开Excel文件 self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"] # 获取"數據"工作表的第一列数据 data_col = self.data_sheet['A'] data_list = [cell.value for cell in data_col] # 在GUI界面中创建标签和下拉输入框 self.label10 = ttk.Label(self.container_top, text="PEGA-料号:") self.label10.grid(row=0, column=0, padx=5, pady=5) self.material_name11 = ttk.Combobox(self.container_top, values=data_list) self.material_name11.grid(row=0, column=1, padx=5, pady=5) # 设置自动补全功能 if hasattr(self.material_name11, 'set_completion'): self.material_name11.set_completion(True)添加在用戶輸入内容時自動展開下拉選項匹配相似内容,展開下拉輸入框后不能影響手動輸入
时间: 2024-03-16 16:43:56 浏览: 106
你想让用户在下拉输入框中输入内容时,系统能够自动展开与之匹配的相似项,同时保留手动输入的选项,是吗?如果是这样的话,你可以在下拉输入框中添加一个绑定事件,当用户输入内容时自动展开相似的选项。同时,你需要在下拉输入框的属性中设置 `autocomplete` 为 `True`,这样用户在手动输入时不会受到影响。具体实现可以参考下面的代码:
```python
# 绑定事件
def on_entry_click(event):
# 当用户在下拉输入框中输入内容时,自动展开相似的选项
self.material_name11.event_generate('<Down>')
self.material_name11.bind('<FocusIn>', on_entry_click)
# 设置自动补全功能
self.material_name11['autocomplete'] = True
```
相关问题
# 打开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)修改這段代碼中將打開的excel中獲取工作表名為數據中第一列從第2行内容開始為一個列表寫入下拉輸入框中
可以尝试这样修改代码:
```
# 打开Excel文件并获取工作表
self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
self.record_sheet = self.wb["記錄"]
self.data_sheet = self.wb["數據"]
# 从工作表中获取数据并写入下拉框中
data_list = []
for row in range(2, self.data_sheet.max_row + 1):
cell_value = self.data_sheet.cell(row=row, column=1).value
if cell_value:
data_list.append(cell_value)
self.material_name = ttk.Combobox(self.container, values=data_list)
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)
```
这段代码的思路是先从工作表中获取第一列从第2行开始的所有非空单元格的值,存入一个列表中。然后创建一个下拉框控件,将这个列表作为下拉框的值,最后将下拉框控件和标签控件添加到界面上。注意要使用`ttk.Combobox`而不是`tk.ttk.Combobox`,另外要导入`ttk`模块。
def show_excel(self): self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"] rows = self.record_sheet.iter_rows(min_row=1, values_only=True) records = [] header = next(rows) # 将数据插入到文本框中 for row in records: row_str = '' for col in row: row_str += str(col) + '\t' self.result_text.insert(tk.END, row_str + '\n')怎麽將excel表名是數據表中所有内容顯示到文本框中
要将Excel表名为“數據表”中的所有内容显示到文本框中,您可以使用以下代码:
```
def show_excel(self):
self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
self.data_sheet = self.wb["數據表"] # 将工作表命名为"數據表"
rows = self.data_sheet.iter_rows(min_row=1, values_only=True)
records = []
header = next(rows)
# 将数据插入到文本框中
for row in rows:
row_str = ''
for col in row:
row_str += str(col) + '\t'
self.result_text.insert(tk.END, row_str + '\n')
```
在此代码中,我们将工作表命名为“數據表”,并使用该名称从工作簿中获取数据表。然后,我们使用该数据表中的所有行来填充记录列表,并将其插入到文本框中。请注意,这里我们使用的是数据表的所有行,而不是只使用第一行之后的行,因为我们想要显示所有数据。
阅读全文