python - 如何从 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'
解决方案
我环顾四周,发现这篇文章如何从 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()
推荐阅读
- ruby-on-rails - Rails 5 Way 中的这两个陈述是否相互矛盾?
- javascript - 限制mysql数据库表中数据插入的数量
- python - tkinter 列表框中项目文本的对齐方式
- html - CSS 动画/精灵表不会停留在最后一张图片上
- jsp - 支持 JSP/Tomcat 部署的 Web 托管服务?
- r - 使用ggplot没有显示并排的栏
- javascript - 导航栏问题
- c++ - 如何将双向链表中的头初始化为 NULL?
- r - 尝试使用 R 中的窗口函数
- node.js - 使用简单的 HEAD 检查缺少的 imgur.com 图像没有得到 404 或重定向状态代码