Der Zweck meines Codes ist es, eine GUI mit 4 Tasten zu erstellen. Zwei davon öffnen ein "Browse" -Fenster, in dem der Benutzer eine Datei aus einem Verzeichnis auswählen kann. Die dritte Schaltfläche ermöglicht es dem Benutzer, ein Verzeichnis für das endgültige Dokument zu wählen, an das ausgegeben werden soll. Die vierte Schaltfläche wendet meinen Python-Code auf beide Dateien an und erstellt das ausgegebene Dokument.askopenfilename ist nicht definiert? - Erstellen einer Browse-Schaltfläche in tkinter
Beim Versuch, die "browse" -Schaltflächen durch viele Posts hier im Stackoverflow und im Internet zu erstellen, enthalten die meisten Lösungen das Modul "askopenfilename", das oft von tkFileDialog importiert wird. Aber egal wie ich es schreibe, oder welche Variationen von Tkinter-Modulen ich importiere, bekomme ich durchweg die gleichen Fehlermeldungen von "kein Modulname tkfileDialog" oder "askopenfilename ist nicht definiert".
Mache ich etwas falsch mit meinem Code? Ist das ein häufiger Fehler in tkinter mit Python 3.6? Wie würde man eine Schaltfläche zum Durchsuchen erstellen, die eine Datei findet und ihren Pfad hinzufügt?
Bitte lassen Sie mich wissen!
Danke.
Unten ist mein Code:
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()
P. S Wenn Sie irgendwelche anderen Fehler in meinem Code gefunden haben, lassen Sie es mich wissen. Ich beginne gerade mit Tkinter, und als solches kann das etwas völlig Relatives zugeschrieben werden!
Viel geschätzt
Was passiert, wenn Sie 'tkfileDialog' in 'tkFileDialog' ändern? – Kevin
Verwenden Sie für Python 3.x 'filialialog.askopenfilename()', um die Funktion in Ihrem vorhandenen Code aufzurufen, oder fügen Sie einen 'from tkinter.filedialog-Import askopenfilename' hinzu und verwenden Sie' askopenfilename() ', um sie aufzurufen. – martineau