2017-10-05 5 views
0

私のコードの目的は、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で始まっています。このように、これはまったく無関係なものに起因するかもしれません!

多くのお役に立ちました

+0

'tkfileDialog'を 'tkFileDialog'に変更するとどうなりますか? – Kevin

+0

Python 3.xでは、既存のコードの関数を呼び出すために 'filedialog.askopenfilename()'を使うか、 'tkinter.filedialog import askopenfilename'から' askopenfilename() 'を使って呼び出します。 – martineau

答えて

3

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 
1

モジュール名が間違っています。

pythonバージョンが3.6なので、filedialogライブラリを使用する必要があります。 !

import os 
from tkinter import * 
import tkinter.filedialog 

かの問題は、私はaskopenfilenameを追加するために必要なことを実際にした

import os 
from tkinter import * 
from tkinter import filedialog 
+0

私はまだ "ModuleNotFoundError: 'tkFileDialog'という名前のモジュールがありません"というエラーが表示されます –

+0

使用しているPythonのバージョンを知ることはできますか?それは私のためにPythonで動作します2.7 –

+0

モジュールがまだ見つからない場合は、 'pip install tkFileDialog'を使ってモジュールをインストールする必要があります。 –

0

(現在は削除されたコメントにうなり声で述べたように)のFileDialogする(それが見えます。このようになるはず含みこのような - > filedialog.askopenfilename()これは、それは、Python 2と3の両方でTkinterのモジュールで動作しますので、私は自分のコードで使用するものです

+0

正確な答えはすでに他の人によって与えられています。他の人が答えを出したときは、自分の質問に答えないでください。 v.coderとmartineauの両方が正しいです。 Pythonバージョンを提供するとすぐに正確な答えが得られるはずです。 2.Xと3.Xは異なった方法でデータをインポートします。 –

関連する問題