askopenfilename 未定义?- 在 tkinter 中制作浏览按钮

A. *_*gic 1 python filenames tkinter path

我的代码的目的是创建一个具有 4 个按钮的 GUI。其中 2 个是打开“浏览”窗口,允许用户从目录中选择文件。第三个按钮是允许用户选择要输出的最终文档的目录。第四个按钮将我的 python 代码应用于两个文件,创建输出文档。

在尝试创建“浏览”按钮时,通过 stackoverflow 和互联网上的许多帖子,大多数解决方案包括通常从 tkFileDialog 导入的“askopenfilename”模块。但是,无论我如何措辞,或者我导入的 tkinter 模块的任何变体,我始终收到相同的错误消息“没有模块名称 tkfileDialog”或“未定义 askopenfilename”。

我的代码有问题吗?这是在使用 python 3.6 的 tkinter 中发现的常见错误吗?如何创建一个浏览按钮来查找文件并添加其路径?

请告诉我!

谢谢。

下面是我的代码:

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()
Run Code Online (Sandbox Code Playgroud)

PS如果您在我的代码中发现任何其他错误,请告诉我。我刚刚开始使用 tkinter,因此这可能归因于完全无关的事情!

非常感激

mar*_*eau 5

这是我在代码中使用的内容,因此它可以与 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
Run Code Online (Sandbox Code Playgroud)