在我的tkintergui中,用户可以生成pandas数据帧(在本例中,我取一个固定的)。
在GUI中,用户可以输入名称并单击save按钮。
这样做的目的是将dataframe存储为一个全局变量,这样当用户离开我的应用程序时,它就可以使用这个名称了。
我还想跟踪他在组合框中创建的变量。
任何能帮助我的人都会导致n条错误消息,例如
全球测向
^
语法错误:语法无效
这是我的代码:#%% Import libraries
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox as messagebox
import pandas as pd
#%% Main class
class PyDataTest(ttk.Frame):
def __init__(self, master = None):
# Construct the Frame object.
ttk.Frame.__init__(self, master)
self.grid(sticky=tk.N+tk.S+tk.E+tk.W)
self.createWidgets()
def save(self):
global df
df = pd.DataFrame({'AAA' : [1., 2., 3., 4.], 'BBB' : [4., 3., 2., 1.]})
messagebox.showinfo("Info","pandas dataframe saved as df")
# eval("global " + self.pythonVar.get())
# eval(self.pythonVar.get() + " = self.pyTable.data")
# messagebox.showinfo("Info","pandas dataframe saved as " + self.pythonVar.get())
#%% Create widgets
def createWidgets(self):
# Get top window
self.top = self.winfo_toplevel()
# Make it stretchable
self.top.rowconfigure(0, weight=1)
self.top.columnconfigure(0, weight=1)
# Allow to enter a name and save the data in the base workspace
ttk.Label(self, text = "Variable").grid(row = 0, column = 0, sticky = tk.W, padx =5, pady=5)
self.pythonVar = tk.StringVar()
self.pythonVar.set('d')
ttk.Entry(self, textvariable=self.pythonVar).grid(row = 0, column = 1, sticky = tk.W, padx =5, pady=5)
# Save button
ttk.Button(self, text = "Save", command=self.save).grid(row = 0, column = 2, sticky = tk.W, padx =5, pady=5)
# Combobox showing dataframes stored
ttk.Label(self, text = "Dataframes").grid(row = 1, column = 0, sticky = tk.W, padx =5, pady=5)
comboboxDataframes = ttk.Combobox(self)
# variables= [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
# comboboxDataframes['values'] = variables
comboboxDataframes.grid(row = 1, column = 1, sticky = tk.W, padx =5, pady=5)
#%% Allow the class to run stand-alone.
if __name__ == "__main__":
PyDataTest().mainloop()