Python askopenfilename未定义?-在tkinter中创建浏览按钮
我的代码的目的是创建一个有4个按钮的GUI。其中两个用于打开浏览窗口,允许用户从目录中选择文件。第三个按钮允许用户选择最终文档输出到的目录。第四个按钮将我的python代码应用于这两个文件,从而创建输出的文档 在尝试创建浏览按钮时,通过stackoverflow和internet上的许多帖子,大多数解决方案包括askopenfilename模块,该模块通常从tkFileDialog导入。但是,无论我如何使用它,或者我导入的tkinter模块的任何变体,我始终会收到相同的错误消息,即没有模块名tkfileDialog或askopenfilename未定义 我的代码有问题吗?这是Python3.6的tkinter中常见的错误吗?如何创建一个浏览按钮来查找文件并添加其路径 请让我知道 谢谢 下面是我的代码:Python askopenfilename未定义?-在tkinter中创建浏览按钮,python,tkinter,path,filenames,Python,Tkinter,Path,Filenames,我的代码的目的是创建一个有4个按钮的GUI。其中两个用于打开浏览窗口,允许用户从目录中选择文件。第三个按钮允许用户选择最终文档输出到的目录。第四个按钮将我的python代码应用于这两个文件,从而创建输出的文档 在尝试创建浏览按钮时,通过stackoverflow和internet上的许多帖子,大多数解决方案包括askopenfilename模块,该模块通常从tkFileDialog导入。但是,无论我如何使用它,或者我导入的tkinter模块的任何变体,我始终会收到相同的错误消息,即没有模块名tk
import os
#from tkFileDialog import *
from tkinter import filedialog
from Tkinter import *
from tkfileDialog import askopenfilename
content = 'apple'
file_path = 'squarebot'
#FUNCTIONS
def browsefunc(): #browse button to search for files
filename = 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 open_file(): #also browse button to search for files - im trying various things to get this to work!
global content
global file_path
#filename = filedialog.askopenfilename(filetypes = (typeName {.txt},))
filename = askopenfilename()
infile = open(filename, 'r')
content = infile.read()
file_path = os.path.dirname(filename)
entry.delete(0, END)
entry.insert(0, file_path)
return content
def process_file(content): #process conversion code
print(content)
def directoryname():
directoryname = filedialog.askdirectory() # pick a folder
#GUI
root = Tk()
root.title('DCLF Converter')
root.geometry("598x600")
mf = Frame(root)
mf.pack()
f1 = Frame(mf, width=600, height=250) #DC file
f1.pack(fill=X)
f2 = Frame(mf, width=600, height=250) #LF file
f2.pack(fill=X)
f3 = Frame(mf, width=600, height=250) #destination folder
f3.pack(fill=X)
f4 = Frame(mf, width=600, height=250) #convert button
f4.pack()
file_path = StringVar
Label(f1,text="Select Your DC File (Only txt files)").grid(row=0, column=0, sticky='e') #DC 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 Your LF File (Only csv files)").grid(row=0, column=0, sticky='e') #LF 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)#DC button
Button(f2, text="Browse", command=browsefunc).grid(row=0, column=27, sticky='ew', padx=8, pady=4)#LF 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)#convert button
root.mainloop()
如果你在我的代码中发现任何其他错误,请告诉我。我只是从tkinter开始,因此这可能是由于一些完全无关的事情
非常感谢模块名称有误 因为python版本是3.6,所以需要使用filedialog库。Include的外观应如下所示:
import os
from tkinter import *
import tkinter.filedialog
或
模块名称命名错误 因为python版本是3.6,所以需要使用filedialog库。Include的外观应如下所示:
import os
from tkinter import *
import tkinter.filedialog
或
问题实际上是我需要将askopenfilename附加到filedialog,正如Roars在一条现已删除的评论中提到的那样!它看起来像->filedialog.askopenfilename.问题实际上是我需要将askopenfilename附加到filedialog中,就像Roars在一条现已删除的评论中提到的那样!它看起来像->文件对话框.askopenfilename.这是我在代码中使用的,因此它将与Python 2和3中的Tkinter模块一起工作:
try:
import Tkinter as tk
import ttk
from tkFileDialog import askopenfilename
import tkMessageBox
import tkSimpleDialog
from tkSimpleDialog import Dialog
except ModuleNotFoundError: # Python 3
import tkinter as tk
from tkinter import ttk
from tkinter.filedialog import askopenfilename
import tkinter.messagebox as tkMessageBox
import tkinter.simpledialog as tkSimpleDialog
from tkinter.simpledialog import Dialog
这是我在代码中使用的,因此它将与Python 2和3中的Tkinter模块一起工作:
try:
import Tkinter as tk
import ttk
from tkFileDialog import askopenfilename
import tkMessageBox
import tkSimpleDialog
from tkSimpleDialog import Dialog
except ModuleNotFoundError: # Python 3
import tkinter as tk
from tkinter import ttk
from tkinter.filedialog import askopenfilename
import tkinter.messagebox as tkMessageBox
import tkinter.simpledialog as tkSimpleDialog
from tkinter.simpledialog import Dialog
您可以尝试以下方法:
从tkinter.filedialog导入askopenfilename
您可以尝试以下方法:
从tkinter.filedialog导入askopenfilename
如果将tkfileDialog更改为tkfileDialog,会发生什么情况?对于Python 3.x,使用filedialog.askopenfilename在现有代码中调用函数,或者添加一个from tkinter.filedialog导入askopenfilename并仅使用askopenfilename调用它。如果将tkfileDialog更改为tkfileDialog,会发生什么情况?对于Python 3.x,使用filedialog.askopenfilename调用函数在现有代码中调用该函数或添加一个从tkinter.filedialog导入askopenfilename并仅使用askopenfilename调用它。我仍然得到错误ModuleNotFoundError:没有名为“tkFileDialog”的模块我可以知道您正在使用的python版本。它在python 2.7中对我有效。如果仍然找不到该模块,则需要使用pip install tkFileDialog来安装该模块。相应地更改include并向其追加函数调用。我仍然会收到错误ModuleNotFoundError:没有名为“tkFileDialog”的模块我可以知道您正在使用的python版本。在Python2.7中,它对我很有效。如果仍然找不到该模块,则需要使用pip install tkFileDialog来安装该模块。相应地更改include并向其附加函数调用。其他人已经给出了准确的答案。当别人提供答案时,不要回答自己的问题。v.coder和martineau都是正确的。您应该注意,提供python版本会立即得到准确的答案。由于2.X和3.X导入文件对话框不同。@Mike SMT他的答案是我需要的答案,即使其他人可能被认为是相同的,但他们的措辞并不清楚,因为其他人已经给出了准确的答案。当别人提供答案时,不要回答自己的问题。v.coder和martineau都是正确的。您应该注意,提供python版本会立即得到准确的答案。因为2.X和3.X导入文件对话框不同。@Mike SMT他的答案就是我需要的答案,即使其他答案可能被认为是相同的,但它们的措辞并不清楚