鱼C论坛

 找回密码
 立即注册
查看: 2852|回复: 8

[已解决]零基础学习python 077

[复制链接]
发表于 2017-3-28 15:01:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from tkinter import *

  2. root = Tk()

  3. def callback():
  4.     fileName = filedialog.askopenfilename()
  5.     #print(fileName)

  6. Button(root, text="打开文件", command=callback).pack()

  7. mainloop()
复制代码


Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699, in __call__
    return self.func(*args)
  File "C:/Users/Administrator/Desktop/python学习/tkinter/打开文件.py", line 13, in callback
    fileName = filedialog.askopenfilename()
NameError: name 'filedialog' is not defined


我是python3.6
最佳答案
2017-3-28 15:42:17
修改成这种方式
  1. from tkinter import *
  2. from tkinter.filedialog import askopenfilename

  3. root = Tk()

  4. def callback():
  5.     fileName = askopenfilename()
  6.     #print(fileName)

  7. Button(root, text="打开文件", command=callback).pack()

  8. mainloop()
复制代码


或者
  1. from tkinter import *
  2. import tkinter.filedialog

  3. root = Tk()

  4. def callback():
  5.     fileName = tkinter.filedialog.askopenfilename()
  6.     #print(fileName)

  7. Button(root, text="打开文件", command=callback).pack()

  8. mainloop()
复制代码

那视频毕竟是之前的,现在最新的使用方法可能变更了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-28 15:33:52 | 显示全部楼层
本帖最后由 gopythoner 于 2017-3-28 15:37 编辑

NameError: name 'filedialog' is not defined
看报错的原因就知道是在说'filedialog'找不到,我不是很清楚这个的用法,但是按照这个报错的意思,
按照我检查错误的思路:
第一,先去确认你用的这个方法是否是存在的,如果是Python的方法,确认一下是不是需要先import 一下才能用,如果不是Python的内部方法,确认一下是不是要pip一下在import
第二,这个方法可以直接用,也存在,但是你输入错了,检查输入是否有错

另外,Python3和Python2.7对于tkinter里面的一些方法好像是改了很多表达的方式,同样的方法可能大小写就变了,你也可以去确认一下是不是这个方法的写法在3.6中不一样了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-28 15:42:17 | 显示全部楼层    本楼为最佳答案   
修改成这种方式
  1. from tkinter import *
  2. from tkinter.filedialog import askopenfilename

  3. root = Tk()

  4. def callback():
  5.     fileName = askopenfilename()
  6.     #print(fileName)

  7. Button(root, text="打开文件", command=callback).pack()

  8. mainloop()
复制代码


或者
  1. from tkinter import *
  2. import tkinter.filedialog

  3. root = Tk()

  4. def callback():
  5.     fileName = tkinter.filedialog.askopenfilename()
  6.     #print(fileName)

  7. Button(root, text="打开文件", command=callback).pack()

  8. mainloop()
复制代码

那视频毕竟是之前的,现在最新的使用方法可能变更了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-28 16:06:13 | 显示全部楼层

是对的,我所不明白的是from tkinter import * 不就是导入了tkinter模块里面的所有对象吗?为什么fileName =filedialog.askopenfilename()这种调用方法会出错呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-28 16:40:49 | 显示全部楼层
醉梦醒 发表于 2017-3-28 16:06
是对的,我所不明白的是from tkinter import * 不就是导入了tkinter模块里面的所有对象吗?为什么fileNam ...

帮你查了下,python3使用filedialog要导入import tkinter.filedialog
http://stackoverflow.com/questions/31669945/tkinter-import-filedialog-error
看下这边的回答,python2和python3这个模块使用有所不同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-28 16:50:20 | 显示全部楼层
我在3.5.2下运行没有问题。
1.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-28 16:56:40 | 显示全部楼层
冬雪雪冬 发表于 2017-3-28 16:50
我在3.5.2下运行没有问题。

对啊,小甲鱼录视频的时候用的是3.4的版本也可以运行,3.6就报错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-28 16:58:04 | 显示全部楼层
lumber2388779 发表于 2017-3-28 16:40
帮你查了下,python3使用filedialog要导入import tkinter.filedialog
http://stackoverflow.com/questio ...

小甲鱼录视频时用的是3.4的版本,是可以运行的,可能3.6有些改动吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-30 21:57:47 | 显示全部楼层
冬雪雪冬 发表于 2017-3-28 16:50
我在3.5.2下运行没有问题。

我这边3.6试了是不行的,版本变更的原因吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 19:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表