1
我遇到了Tkinter代碼的問題。代碼的目標是有4個按鈕,2個瀏覽按鈕,用來選擇要相互比較的場景。第三種是爲輸出文件選擇一個目的地。第四個是拉我的python代碼與兩個文件將被計算。Tkinter中的按鈕錯誤 - 選擇文件,添加它們的路徑
我有我的瀏覽按鈕,在那裏,每當我在窗口中選擇一個文件時遇到困難,他們返回:
pathlabel.delete(0, END)
NameError: name 'pathlabel' is not defined
或
content = infile.read(filename2)
TypeError: integer argument expected, got str"
的預期結果是所選擇的文件保存它們的路徑,以便我可以在Python代碼中使用這些路徑。
我在網上查找有關pathlabel和infile函數的文檔,並沒有看到任何有用的東西。任何人都可以看到我出錯的地方,爲什麼會出現這些錯誤?
有沒有人有任何關於如何在本地保存路徑的建議(也許是一個變量),以便以後可以將它們拉出來?迄今爲止,我一直沒有成功。
謝謝。
下面是我的代碼:
import os
from Tkinter import *
from tkinter import filedialog
content = 'apple'
file_path = 'squarebot'
#FUNCTIONS
def browsefunc(): #browse button to search for files
filename = filedialog.askopenfilename()
infile = open(filename, 'r')
content = infile.read()
pathadd = os.path.dirname(filename)+filename
pathlabel.delete(0, END)
pathlabel.insert(0, pathadd)
return content
def browsefunc2(): #browse button to search for files
filename2 = filedialog.askopenfilename()
infile = open(filename2, 'r')
content = infile.read(filename2)
pathadd = os.path.dirname(filename2)+filename2
pathlabel.delete(0, END)
pathlabel.insert(0, pathadd)
return content
def process_file(content): #process reconciliation code
print(content)
def directoryname():
directoryname = filedialog.askdirectory() # pick a folder
#GUI
root = Tk()
root.title('Reconciliation Converter')
root.geometry("598x150")
mf = Frame(root)
mf.pack()
f1 = Frame(mf, width=600, height=250) #file1
f1.pack(fill=X)
f2 = Frame(mf, width=600, height=250) #file2
f2.pack(fill=X)
f3 = Frame(mf, width=600, height=250) #destination folder
f3.pack(fill=X)
f4 = Frame(mf, width=600, height=250) #reconcile button
f4.pack()
file_path = StringVar
Label(f1,text="Select file 1 (Only txt files)").grid(row=0, column=0, sticky='e') #file1 button
entry = Entry(f1, width=50, textvariable=file_path)
entry.grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25)
Label(f2,text="Select file 2 (Only csv files)").grid(row=0, column=0, sticky='e') #file2 button
entry = Entry(f2, width=50, textvariable=file_path)
entry.grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25)
Label(f3,text="Select Your Destination Folder").grid(row=0, column=0, sticky='e') #destination folder button
entry = Entry(f3, width=50, textvariable=directoryname)
entry.grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25)
Button(f1, text="Browse", command=browsefunc).grid(row=0, column=27, sticky='ew', padx=8, pady=4)#file1 button
Button(f2, text="Browse", command=browsefunc2).grid(row=0, column=27, sticky='ew', padx=8, pady=4)#file2 button
Button(f3, text="Browse", command=browsefunc).grid(row=0, column=27, sticky='ew', padx=8, pady=4)#destination folder button
Button(f4, text="RECONCILE NOW", width=32, command=lambda: process_file(content)).grid(sticky='ew', padx=10, pady=10)#reconcile button
root.mainloop()
爲什麼,當我執行的代碼,這兩個file_path1。 get()和file_path2()被追加到directoryname.get()?否則,感謝您的幫助!對此,我真的非常感激。 –
我不確定我的理解,「附加到」是什麼意思?所有這些代碼都會打印出從條目中檢索的路徑。 – kogito
當我實際修復它。在你的代碼中,你正在使用pathadd = os.path.dirname(filename2)+ filename2和pathadd = os.path.dirname(filename)+ filename打印目錄路徑,然後在目錄路徑後追加filepath,創建一個路徑那不存在。我只是將它切換到os.path.join(文件名,文件名),它有一個「智能」連接功能,加入兩個路徑,同時刪除冗餘。 –