私のコードの目的は、4つのボタンを持つGUIを作成することです。そのうちの2つは、ユーザがディレクトリからファイルを選択することを可能にする「ブラウズ」ウィンドウを開くことである。第3のボタンは、最終文書が出力されるディレクトリをユーザが選択できるようにすることである。 4番目のボタンは、両方のファイルに私のpythonコードを適用し、出力されたドキュメントを作成します。askopenfilenameは定義されていませんか? - tkinterでブラウズボタンを作る
"ブラウズ"ボタンを作成しようとすると、stackoverflowとインターネット上の多くのポストで、ほとんどのソリューションには、tkFileDialogからインポートされることが多い "askopenfilename"モジュールが含まれています。しかし、どのような言葉でも、私がインポートするtkinterモジュールのバリエーションに関わらず、 "no module name tkfileDialog"または "askopenfilename is not defined"という同じエラーメッセージを一貫して受け取ります。
私のコードに何か問題がありますか?これは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()
P.Sあなたは私のコード内の任意の他のエラーを発見した場合は私に知らせてください。私はちょうどtkinterで始まっています。このように、これはまったく無関係なものに起因するかもしれません!
多くのお役に立ちました
'tkfileDialog'を 'tkFileDialog'に変更するとどうなりますか? – Kevin
Python 3.xでは、既存のコードの関数を呼び出すために 'filedialog.askopenfilename()'を使うか、 'tkinter.filedialog import askopenfilename'から' askopenfilename() 'を使って呼び出します。 – martineau