from tkinter import filedialog, Label, Button, Entry, StringVar
from tkinter.filedialog import askopenfile
import pandas as pd
root = tk.Tk()
Label(root, text='File Path').grid(row=0, column=0)
v = StringVar()
entry = Entry(root, textvariable=v).grid(row=0, column=1)
Button(root, text='Browse Data Set',command=lambda: v.set(askopenfile())).grid(row=1, column=0)
Button(root, text='Close',command=root.quit()).grid(row=1, column=1)
root.file = v.get()
df = pd.read_csv(root.file)
root.mainloop()
我想在點擊按鈕打開一個數據集(CSV文件),並使用pd.read_csv()
功能,它讀我得到了一些錯誤打開和讀取使用read_csv從Tkinter的GUI
Traceback (most recent call last):
File "/home/abishek/PycharmProjects/untitled1/temp.py", line 21, in <module>
df = pd.read_csv(root.file)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 498, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 275, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 590, in __init__
self._make_engine(self.engine)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 731, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 1103, in __init__
self._reader = _parser.TextReader(src, **kwds)
File "pandas/parser.pyx", line 353, in pandas.parser.TextReader.__cinit__ (pandas/parser.c:3246)
File "pandas/parser.pyx", line 591, in pandas.parser.TextReader._setup_parser_source (pandas/parser.c:6111)
OSError: File b'' does not exist
Process finished with exit code 1
csv文件
請幫我這一次我是新來的Tkinter
我已經完成了第一部分,現在我有另一個問題
1.I瀏覽文件 2.I會使用list(df)
獲取數據幀的列,我想它來顯示它在選項菜單中我與下面的代碼
import tkinter as tk
from tkinter.filedialog import askopenfilename
import pandas as pd
root = tk.Tk()
v = tk.StringVar(root)
v1 = tk.StringVar(root)
v2 = tk.StringVar(root)
v3 = tk.StringVar(root)
df = pd.DataFrame()
col = []
ss = ['a','b','c','d','e']
def get_data_frame():
global v
global df
global col
file_name = askopenfilename()
v.set(file_name)
df = pd.read_csv(file_name)
col = list(df)
print(col)
def fill():
return list(df)
tk.Label(root, text='File Path').grid(row=0, column=0)
entry = tk.Entry(root, textvariable=v).grid(row=0, column=1)
tk.Button(root, text='Browse Data Set', command=get_data_frame).grid(row=0, column=3)
tk.Label(root, text='Class LabelAttribute').grid(row=1, column=0)
tk.OptionMenu(root,v1,*col).grid(row=1, column=1)
v1.set('Nil')
tk.Label(root, text='Row Counter Attribute').grid(row=2, column=0)
v2.set('Nil')
tk.OptionMenu(root,v2,*col).grid(row=2, column=1)
tk.Button(root, text='Close', command=root.destroy).grid(row=5, column=3)
tk.Entry(root, textvariable=v3).grid(row=6, column=0)
tk.Button(root, text='Setter', command=lambda: v3.set(type(col[0]))).grid(row=6, column=1)
v3.set(col)
root.mainloop()
print(col)
這樣做,但蟒蛇是給下面的錯誤
Traceback (most recent call last):
File "/home/abishek/PycharmProjects/untitled1/GUI.py", line 34, in <module>
tk.OptionMenu(root,v1,*col).grid(row=1, column=1)
TypeError: __init__() missing 1 required positional argument: 'value'
程序啓動後立即執行'root.mainloop'之前的任何代碼,因此用戶沒有時間將任何數據輸入到Entry中或單擊任何按鈕。 'root.file = v.get()'會爲'root.file'分配一個空字符串。如果您希望在用戶輸入輸入後執行代碼,則需要將其放入函數中,並使用'command ='或'.bind'將其註冊爲回調。 – Kevin