Tkinter 中的多项选择问题

问题描述 投票:0回答:1

可能是一个简单的问题,但我找不到解决方法。我需要在列表框中进行多项选择并保存其所有值。但不知怎的,我只得到最后选择的一个。有什么方法可以获取所有选择并将其保存到字典或类似的东西中吗?

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 进行多重选择

python-3.x tkinter
1个回答
0
投票

需要完整的代码。我想问题可能出在下面。在定义

listbox
时,需要提及的是
selectmode='multiple'

listbox = Listbox(tab3, selectmode = "multiple")
© www.soinside.com 2019 - 2024. All rights reserved.