关于模块导入问题。
本人使用的是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。
请各位老师答疑解惑!
你说的不行是报错了?
报错的话请提供报错信息 感觉from tkinter import *命令仅仅是将tkinter目录(包)中__init__和__main__两个模块的所有方法进行了导入,
而不包含tkinter包中其它已存在的模块
本帖最后由 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')
isdkz 发表于 2022-5-11 11:30
你说的不行是报错了?
报错的话请提供报错信息
本帖最后由 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__指定的对象导入 isdkz 发表于 2022-5-11 11:49
from tkinter import * 是将 tkinter 包下的 __init__.py 里面的 __all__
指定的对象导入
那就明白了。第78讲有些误导了(零基础老课件78将tkinter14,第1分25秒)。应该是需要把具体方法写到__init__中才行。
isdkz 发表于 2022-5-11 11:49
from tkinter import * 是将 tkinter 包下的 __init__.py 里面的 __all__
指定的对象导入
多谢老师指点!
页:
[1]