鱼C论坛

 找回密码
 立即注册
查看: 1299|回复: 7

[已解决]关于模块导入问题。

[复制链接]
发表于 2022-5-11 11:11:35 | 显示全部楼层 |阅读模式

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

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

x
本人使用的是Python310版本,学习过程中关于模块导入有些疑问。
视频课程78将,tkinter14中,小甲鱼老师说messagebox模块已经含在tkinter中,可以通过from tkinter import *命令后直接使用。
但实际情况并不行。
Python安装目录的libs目录中确实有tkinter这个包,包里面也确实存在messagebox这个模块,但是使用from tkinter import *命令确实无法激活使用。
而是必须用import tkinter.messagebox as xxx方式才行。

针对这个问题,个人感觉有些疑惑。难道from tkinter import *命令并不是将tkinter包中的所有模块导入吗?
虽然教程上说from XXX import xxx是将模块中的方法导入,但我看网上很多人就是用这个命令导入了包中的所有模块。
类似的例子 网上很多,比如:from urllib import *后直接可以使用request和response等模块,但我实际操作确实不行,必须是import urllib.request。

请各位老师答疑解惑!
最佳答案
2022-5-11 11:49:26
本帖最后由 isdkz 于 2022-5-11 12:44 编辑
67193114 发表于 2022-5-11 11:33
感觉from tkinter import *命令仅仅是将tkinter目录(包)中__init__和__main__两个模块的所有方法进行了导 ...


from tkinter import * 是将 tkinter 包下的 __init__.py

里面的 __all__指定的对象导入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-11 11:30:35 | 显示全部楼层
你说的不行是报错了?

报错的话请提供报错信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 11:33:58 | 显示全部楼层
感觉from tkinter import *命令仅仅是将tkinter目录(包)中__init__和__main__两个模块的所有方法进行了导入,
而不包含tkinter包中其它已存在的模块


附件

附件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 11:39:05 | 显示全部楼层
本帖最后由 67193114 于 2022-5-11 11:40 编辑
isdkz 发表于 2022-5-11 11:30
你说的不行是报错了?

报错的话请提供报错信息


异常:
from tkinter import *
messagebox
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    messagebox
NameError: name 'messagebox' is not defined
===============================
正常:
import tkinter.messagebox as messagebox
messagebox.askokcancel('1','2')

正常

正常

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 11:42:55 | 显示全部楼层
isdkz 发表于 2022-5-11 11:30
你说的不行是报错了?

报错的话请提供报错信息

11.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-11 11:49:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-5-11 12:44 编辑
67193114 发表于 2022-5-11 11:33
感觉from tkinter import *命令仅仅是将tkinter目录(包)中__init__和__main__两个模块的所有方法进行了导 ...


from tkinter import * 是将 tkinter 包下的 __init__.py

里面的 __all__指定的对象导入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 11:55:39 | 显示全部楼层
isdkz 发表于 2022-5-11 11:49
from tkinter import * 是将 tkinter 包下的 __init__.py 里面的 __all__

指定的对象导入

那就明白了。第78讲有些误导了(零基础老课件78将tkinter14,第1分25秒)。应该是需要把具体方法写到__init__中才行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-11 11:58:01 | 显示全部楼层
isdkz 发表于 2022-5-11 11:49
from tkinter import * 是将 tkinter 包下的 __init__.py 里面的 __all__

指定的对象导入

多谢老师指点!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 10:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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