如何在Tkinter中通过下拉框选择、按钮点击导入数据集并存为DataFrame
问题解决方案
问题根因
你遇到的加载失败核心原因是Tkinter按钮绑定的回调函数的返回值会被系统直接丢弃,你在dat_import()里return的DataFrame没有被赋值给可全局访问的存储变量,运行完函数就被内存回收了,自然无法后续调用。
修改后可运行代码
from tkinter import * from sklearn import datasets import pandas as pd # 定义全局变量存储加载好的数据集 loaded_data = None datasets = ["dataset 1", "dataset 2", "dataset 3", "dataset 4"] master = Tk() variable = StringVar(master) variable.set(datasets[0]) data_options = OptionMenu(master, variable, *datasets) data_options.pack(pady=10) def dat_import(): global loaded_data selected = variable.get() if selected == "dataset 1": loaded_data = pd.DataFrame(datasets.load_iris().data) elif selected == "dataset 2": loaded_data = pd.DataFrame(datasets.load_diabetes().data) elif selected == "dataset 3": loaded_data = pd.DataFrame(datasets.load_digits().data) elif selected == "dataset 4": # 注意:sklearn 1.2及以上版本已移除load_boston,如报错可替换为datasets.load_wine() loaded_data = pd.DataFrame(datasets.load_boston().data) # 可选:打印确认加载结果 print(f"数据集{selected}加载完成,形状为:", loaded_data.shape) button = Button(master, text = "Import Dataset", command = dat_import) button.pack(pady=5) mainloop()
后续调用说明
后续你需要做分析时,直接访问全局变量loaded_data即可,它就是你选中的数据集对应的DataFrame格式对象。如果需要可视化确认加载结果,也可以额外添加按钮调用loaded_data.head()打印前几行数据验证。
内容的提问来源于stack exchange,提问作者user14268322
相关产品推荐
相关产品推荐

