首页 > 解决方案 > 如何从 python (pandas 和 tkinter) 中的现有列表中创建下拉列表

问题描述

我希望用户提交他们的 csv excel 文件并从他想要分析的下拉菜单中选择列。

import pandas as pd 
import os 
import sys
from tkinter import *

root = Tk()
root.title('Eng3')

filepath = input('Enter filepath: ')    
assert os.path.exists(filepath), "I did not find the file at, " + str(filepath)
f = open(filepath, 'r+')
print("Hooray we found your file!")   
f.close()   

file = pd.read_csv(filepath, encoding='latin1', delimiter=',')   
column_list = file.columns.tolist()
print(column_list)

所以我把excel文件中的列名做成了一个列表。如何从此列表(column_list)中创建一个下拉菜单以显示所有列名?当我尝试时:

tkvar = StringVar(column_list)
menu = OptionMenu(root, tvkar, column_list)

我收到此错误:

AttributeError: 'list' object has no attribute '_root'

标签: pythonpandastkinter

解决方案


我环顾四周,发现这篇文章如何从 Tkinter 中的列表创建下拉菜单?. 很有用

file = pd.read_csv(filepath, encoding='latin1', delimiter=',')  
column_list = file.columns.tolist() #convert pandas dataframe to simple python list    

OPTIONS = column_list  #this is what solved my problem

master = Tk()
master.title('Eng3')
variable = StringVar(master)
variable.set(OPTIONS[0]) # default value


w = OptionMenu(master, variable, *OPTIONS)
w.pack()

def ok():
  print ("value is:" + variable.get())

button = Button(master, text="OK", command=ok)
button.pack()

推荐阅读