2017-10-05 5 views
0

내 코드의 목적은 4 개의 버튼이있는 GUI를 만드는 것입니다. 그들 중 2 명은 사용자가 디렉토리에서 파일을 선택할 수있게하는 "찾아보기"창을 여는 것입니다. 세 번째 버튼은 최종 문서가 출력 될 디렉토리를 사용자가 선택할 수있게합니다. 네 번째 버튼은 파이썬 코드를 두 파일에 적용하여 출력 된 문서를 만듭니다.askopenfilename이 정의되지 않았습니까? - tkinter에서 찾아보기 버튼 만들기

stackoverflow 및 인터넷에서 많은 게시물을 통해 "찾아보기"단추를 만들려고 할 때 대부분의 솔루션에는 종종 tkFileDialog에서 가져온 "askopenfilename"모듈이 포함됩니다. 그러나 내가 가져온 tkinter 모듈의 변형이나 단어의 의미와 상관없이 "no module name tkfileDialog"또는 "askopenfilename is not defined"라는 동일한 오류 메시지를 일관되게받습니다.

내 코드에 문제가 있습니까? 파이썬 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

파이썬 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

모듈 이름이 잘못되었습니다.

파이썬 버전이 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

사용중인 파이썬 버전을 알 수 있습니까? 그것은 나를 위해 파이썬에서 작동합니다. –

+0

모듈이 여전히 발견되지 않으면'pip install tkFileDialog'를 사용하여 모듈을 설치해야합니다. –

0

의 (a 현재 삭제 된 코멘트에 포효에 의해 언급 한 바와 같이)의 FileDialog에 (보이는 다음은 다음과 같이 보일 것이다 포함 이 같은 -> filedialog.askopenfilename()이이 파이썬 2와 3 모두에서 Tkinter를 모듈로 작동합니다 그래서 난 내 코드에서 사용하는 것입니다

+0

정확한 답변이 이미 다른 사람들에 의해 주어졌습니다. 다른 사람들이 답을 줄 때 자신의 질문에 대답하지 마십시오. v.coder와 martineau는 모두 정확합니다. 파이썬 버전을 제공하면 곧바로 정확한 대답을 얻게 될 것입니다. 2.X와 3.X는 filedialog를 다르게 임포트합니다. –