Python 3.6 - AttributeError:module' tkinter'没有属性" filedialog'

时间:2017-08-06 16:04:29

标签: python-3.x tkinter

几分钟前我的功能完美无缺。没有修改代码,只是安装了PyAudio。我按照主题得到错误。从命令行或IDE运行它并不重要,同样的错误。有什么想法吗?

def DataFinder():
    #imports and initialize
    import pandas as pd
    import tkinter as tk

    finder = tk.Tk()
    finder.withdraw()

    __dataFlag = False
    #ask user to select a file
    __path = tk.filedialog.askopenfilename()
    #check the extension to handle reader
    #for csv files
    if __path.endswith('.csv')==True:
        df = pd.read_csv(__path,header=0)
        return df
        __dataFlag = True
    #and for excel files
    elif __path.endswith('.xls')==True:
        df = pd.read_excel(__path,header=0)
        return df
        __dataFlag = True
    #if a file is not a supported type display message and quit
    else:
        __dataFlag = False

    #check if there is a data to be returned
    if __dataFlag==True:
        return df
    else:
        print('The file format is not supported in this version.')

2 个答案:

答案 0 :(得分:4)

以下代码对我不起作用:

import tkinter as tk
import tkinter.filedialog

但是以下方法确实有效:

import tkinter
import tkinter.filedialog

还有这个:

import tkinter.filedialog
import tkinter as tk

希望这会有所帮助

注意

如@VaidøtasI.所述,您无法从filedialog导入tkinter。因为您不是导入原始的tkinter,而是导入别名版本tk

答案 1 :(得分:1)

显式导入filedialog可以解决此问题。 因此,您只需要将此行添加到代码中即可:

import tkinter.filedialog

您可以在Why tkinter module raises attribute error when run via command line but not when run via IDLE?

中找到更多信息。