我正在尝试编写一个简单的GUI来绘制来自csv
文件的数据,我将其读入pandas DataFrame
。我对GUI编程完全不熟悉,而且我很难理解像Tkinter这样的事件驱动设置。
作为一个简单的练习,我想设置几个按钮,一个用于打开文件并阅读DataFrame
,另一个用于打印生成的DataFrame
。我的第一次天真的尝试没有成功:
import pandas as pd
import tkFileDialog
import Tkinter as tk
def open_events_db():
file_path_string = tkFileDialog.askopenfilename()
eventsdb = pd.read_csv(file_path_string,encoding='utf-8')
return eventsdb
def print_events_db(eventsdb):
print eventsdb
def main():
root=tk.Tk()
eventsdb = tk.Button(text='File Open', command=open_events_db).pack(fill=tk.X)
tk.Button(text='Print DB', command=lambda:print_events_db(eventsdb)).pack(fill=tk.X)
tk.mainloop()
if __name__=="__main__":
main()
我可以在文件中正确阅读并打开它,但事后来看,显然我无法从文件打开按钮返回eventsdb
并将其作为打印按钮的参数。
我认为让按钮在该数据库上运行是不合理的,那么在GUI中传递变量的正确方法是什么?