可能是一个简单的问题,但我找不到解决方法。我需要在列表框中进行多项选择并保存其所有值。但不知怎的,我只得到最后选择的一个。有什么方法可以获取所有选择并将其保存到字典或类似的东西中吗?
def save_user_doc():
selected_data = {}
selected_column = user_doc_listbox.get(user_doc_listbox.curselection())
if selected_column:
selected_indices = [] # Initialize an empty list for selected indices
for idx in selected_column_values.curselection():
selected_indices.append(idx) # Append each selected index to the list
print('selected indices', selected_indices)
# Retrieve selected values using list comprehension
selected_values = [selected_column_values.get(idx) for idx in selected_indices]
# Ensure selected values are not empty
if selected_values:
# If the selected column already exists in selected_data, extend its values
if selected_column in selected_data:
selected_data[selected_column].extend(selected_values)
else:
# Otherwise, create a new entry for the column
selected_data[selected_column] = selected_values
# Find the maximum length of all value lists
max_len = max(len(values) for values in selected_data.values())
# Pad shorter lists with None to ensure equal length
for col, values in selected_data.items():
selected_data[col] += [None] * (max_len - len(values))
# Create custom index with the appropriate length
custom_index = range(1, max_len + 1)
# Create DataFrame from selected data
selected_df = pd.DataFrame(selected_data, index=custom_index)
# Prompt user to select file path and save DataFrame to Excel file
save_path = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel files", "*.xlsx")])
if save_path:
selected_df.to_excel(save_path, index=True)
print("Selections saved to:", save_path)
else:
print("Please select values from the second listbox.")
else:
print("Please select a column from the first listbox.")
我需要找到一个解决方案来获取所有值,同时使用 tkinter 进行多重选择
需要完整的代码。我想问题可能出在下面。在定义
listbox
时,需要提及的是selectmode='multiple'
。
listbox = Listbox(tab3, selectmode = "multiple")