大头目 发表于 2019-8-13 14:33:20

Python小白进化之路004_'tkinter' has no attribute 'filedialog'

本帖最后由 大头目 于 2019-8-14 10:18 编辑

最近想做个小交互界面,遇见个没碰到过的问题:
AttributeError: module 'tkinter' has no attribute 'filedialog'
把 tkinter全部插入居然用不了filedialog(小甲鱼的旧版书内没有写到这个问题)
百度查到:
这说明filedialog是tkinter模块下的一个子模块,并不是他的函数和性质。不能直接去调用filedialog模块下的函数;需要引入子模块filedialog,再去使用它的函数。
这个问题提示我们使用python的过程中,需要注意子模块和函数的性质。
同时这也是类中的相关知识,子模块就是子类,函数是父类中的函数。

from tkinter import *
from tkinter import filedialog   #filedialog需要单独插入,类似于子类的存在

root = Tk()
root.title('图片搜索小程序')
Label(root,text = '搜索文件夹:').grid(row = 0)
Label(root,text = '输出文件夹:').grid(row = 1)
e1 = Entry(root,width = 50)
e2 = Entry(root,width = 50)

e1.grid(row = 0, column = 1, padx = 10, pady = 10)
e2.grid(row = 1, column = 1, padx = 10, pady = 10)

def openfile():
    fileName = filedialog.askopenfilename()
    taget = e1.get()
    output = e2.get()
    print('选取样本:',fileName)
    print('搜索文件夹:',taget)
    print('输出文件夹:',output)
#    e1.delete(0,END)
#    e2.delete(0,END)
   

Button(root, text = '选取样本', width = 10, command = openfile)\
.grid(sticky = W, padx = 20, pady = 10)

#Button(root, text = '退出', width = 10, command = root.quit)\
#.grid(row = 3, column = 1, sticky = W, padx = 10, pady = 5)

mainloop()

大头目 发表于 2019-9-3 11:00:05

#实际测试如下方式也可以
import tkinter as tk
def openfile():
    global input_path
    input_path = tk.filedialog.askopenfilename()
    if input_path:
      tk.messagebox.showinfo('Return','选择的输入路径为%s' % input_path)
    else:
      tk.messagebox.showinfo('Return','您还未选择输入路径')

大头目 发表于 2019-9-3 11:02:37

另外在设置窗口位置是小甲鱼由于是from tkinter import *,导致sticky = W参数变量设置一下子没看懂W是什么东西。其实就是sticky = tk.W,第一次碰到脑子没转过弯来!

ele0924 发表于 2021-3-28 14:11:32

学习
页: [1]
查看完整版本: Python小白进化之路004_'tkinter' has no attribute 'filedialog'