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(文件名,文件名),它有一个“智能”连接功能,加入两个路径,同时删除冗余。 –