如何在Python tkinter中同时读取csv?
我有一些问题要问你。 我的第一个问题是,我使用import_csv_data函数读取csv文件,但在读取数据之前,虽然我定义了“全局df”,但它表示df未定义。如果我创建一个类似df=pd.DataFrame(Columns=[“X”,“Y”])的df,那么这次的选项菜单显示X和Y。如果我想显示数据帧的列,我需要删除df=pd.DataFrame(Columns=[“X”,“Y”]),然后我需要再次运行代码。和这个问题相关的一个问题是,当我阅读csv文件时,为了查看最后一个df,我需要关闭窗口。所以我想读取csv文件,我想让程序同时记忆。 第二个问题是,当我更改OptionMenu上的SelectedValue时,我想获得SelectedValue-selected列名-并在tk.按钮上显示(Drop column+SelectedValue)<简言之,我想在OptionMenu上获得列名,同时在按钮上显示名称。第三个问题是我不能将按钮、文本或标签安装到框架中。这限制了我,我添加了一张描述这个问题的照片。[这是图片url.>] 多谢各位如何在Python tkinter中同时读取csv?,python,pandas,csv,dataframe,tkinter,Python,Pandas,Csv,Dataframe,Tkinter,我有一些问题要问你。 我的第一个问题是,我使用import_csv_data函数读取csv文件,但在读取数据之前,虽然我定义了“全局df”,但它表示df未定义。如果我创建一个类似df=pd.DataFrame(Columns=[“X”,“Y”])的df,那么这次的选项菜单显示X和Y。如果我想显示数据帧的列,我需要删除df=pd.DataFrame(Columns=[“X”,“Y”]),然后我需要再次运行代码。和这个问题相关的一个问题是,当我阅读csv文件时,为了查看最后一个df,我需要关闭窗口。
def _quit():
root.quit() # stops mainloop
root.destroy() # this is necessary on Windows to prevent
# Fatal Python Error: PyEval_RestoreThread: NULL tstate
def option_changed(*args):
global SelectedValue
SelectedValue = selection.get()
print(SelectedValue)
def hello():
print("hello!")
def import_csv_data():
global v
global df
global a
csv_file_path = askopenfilename()
print(csv_file_path)
v.set(csv_file_path)
df = pd.read_csv(csv_file_path)
a = csv_file_path
def removenans():
print("Merhaba")
print(df.head())
df = pd.read_csv(csv_file_path)
def plotthefigure():
df.dropna(inplace=True,axis=0)
df.Sex = [1 if i=="female" else 0 for i in df.Sex]
plt.figure(figsize=[6,5])
plt.plot(range(len(df["Sex"])),df["Sex"])
plt.title("Age vs Sex")
# Plot window name
plt.gcf().canvas.set_window_title("Plot Frame")
#Switching Frames
def raise_frame(frame):
frame.tkraise()
# Opening new window
def aboutmenudef():
window = tk.Toplevel(root)
def printdf():
tk.Label(MainFrame,textvariable=df.head()).grid(row=6,
columnspan=7,
sticky='WE',padx=5, pady=5, ipadx=5, ipady=5)
root = tk.Tk()
root.wm_title("Machine Learning Implementer")
# FRAMES #
#
MainFrame = Frame(root)
AboutFrame = Frame(root)
HelpFrame = Frame(root)
#
for frame in (MainFrame,AboutFrame,HelpFrame):
frame.grid(row=0, column=0, sticky=NSEW)
v = tk.StringVar()
entry = tk.Entry(MainFrame,
textvariable=v).grid(row=0,
column=1,
ipadx=100)
head = tk.StringVar()
tk.Label(MainFrame,textvariable=head).grid(row=3, columnspan=2,
sticky='WE',padx=5, pady=5, ipadx=5, ipady=5)
tk.Label(AboutFrame,
text="About Us").grid(row=0,column=0)
tk.Label(MainFrame,text="File Path").grid(row=0,
column=0)
mainlabel = Label(MainFrame,text="DF Columns").grid(row=5,
column=0)
###---------------------- BUTTON ----------------------###
tk.Button(MainFrame,
text=" Read CSV ",
command=removenans).grid(row=1,
column=0)
tk.Button(MainFrame,
text=" Drop Column\n "+SelectedValue,
command=removenans).grid(row=2,
column=0)
tk.Button(MainFrame,
text="Remove NaN Values",
command=removenans).grid(row=3,
column=0)
tk.Button(MainFrame,
text=" Print Head of DF ",
command=printdf).grid(row=4,
column=0)
tk.Button(MainFrame,
text=" Scale Parameters ",
command=printdf).grid(row=10,
column=0)
tk.Button(MainFrame,
text="Plot the Graph",
command=plotthefigure).grid(row=0,
column=2)
###---------------------- CHECKBOX ----------------------###
var = IntVar()
c = Checkbutton(root,text="Independent",variable = var)
c.grid(row=3, column=3)
c.config(state=DISABLED)
###---------------------- MENU & TOOLBARS ----------------------###
menubar = Menu(root)
# FILE MENU #
filemenu = Menu(menubar,tearoff=0)
filemenu.add_command(label="Open CSV File",
command=import_csv_data)
#filemenu.add_command(label="Save",
# command=hello)
filemenu.add_separator()
filemenu.add_command(label="Exit",
command=_quit)
menubar.add_cascade(label=" File ",
menu=filemenu)
# MENU PLOT SECTION #
plotmenu = Menu(menubar,tearoff=0)
plotmenu.add_command(label="Open Plot",
command=hello)
#plotmenu.add_separator()
plotmenu.add_command(label="Close Program",
command=_quit)
menubar.add_cascade(label=" Plot ",
menu=plotmenu)
# HELP #
helpmenu = Menu(menubar,tearoff=0)
helpmenu.add_command(label="Help Index",
command=hello)
menubar.add_cascade(label=" Help ",
menu=helpmenu)
# ABOUT #
aboutmenu = Menu(menubar,tearoff=0)
aboutmenu.add_command(label="About",
command=lambda:raise_frame(AboutFrame))
menubar.add_cascade(label=" About ",
menu=aboutmenu)
root.config(menu=menubar)
# OPTION MENU #
selection = StringVar(MainFrame)
selection.set("-") # default value
selection.trace("w", option_changed)
w = OptionMenu(MainFrame, selection, *df.columns).grid(row=2,
column=1)
#
root.geometry("800x550")
raise_frame(MainFrame)
root.mainloop()
对于第一个问题,我创建了一个名为Read Csv的新按钮,因此在浏览Csv数据后,我用一个按钮读取它。对于第二个问题,我不能这样做。但我发现了一些关于label with label.config的信息,然后您可以使用def函数更改值,例如,您可以使用按钮连接该函数。对于最后一个问题,我想是关于root.geometry()的,我已经将其更改为root.geometry(“1200x800”),并且我已经在root=Tk()下面的顶部一节中定义了它。。。。如果您对tkinter有任何疑问,可以询问。对于第一个问题,我创建了一个名为Read Csv的新按钮,因此在浏览Csv数据后,我会使用一个按钮来阅读它。对于第二个问题,我不能这样做。但我发现了一些关于label with label.config的信息,然后您可以使用def函数更改值,例如,您可以使用按钮连接该函数。对于最后一个问题,我想是关于root.geometry()的,我已经将其更改为root.geometry(“1200x800”),并且我已经在root=Tk()下面的顶部一节中定义了它。。。。如果您对tkinter有任何问题,可以询问