鱼C论坛

 找回密码
 立即注册
查看: 578|回复: 10

[已解决]有关 from 模块 import *的问题

[复制链接]
发表于 2020-4-10 15:12:11 | 显示全部楼层 |阅读模式

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

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

x
请问各位鱼友,from 模块 import * 到底该怎么使用呢?

from tkinter import *

window = Tk()

window.geometry('200x200')

def hit_me():
    messagebox.showinfo(title='hi',text='hahaha')


b = Button(window,text ='hit me', command = hit_me)

b.pack()
mainloop()


我输入了以上代码,希望使用tkinter里面的messagebox,但是不知道为什么报错了,报错内容是:NameError: name 'messagebox' is not defined。

我之前一直认为from tkinter import * 意味着tkinter里面所有的类,函数之类的都可以直接使用不需要再加上tkinter,但是这个messagebox为什么不能呢?

我上网找了一下其他资料,发现别人的做法是还要再写一句from tkinter import messagebox。 那import * 到底意味着什么呢?
最佳答案
2020-4-10 15:56:56
shatanzongcai 发表于 2020-4-10 15:43
也就是说其实messagebox是文件夹中的另外一个文件夹吗

那啥,很抱歉,刚才说错了一点,messagebox不是一个包,只是一个文件,但tkinter是一个包,messagebox就在tkinter里。
你可以去
你python的安装目录\Lib\tkinter
来观察这个结构
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-10 15:16:34 | 显示全部楼层
模块有一个__all__属性,
里面就是from 模块 import *可以导入的东西,
不在这里面的都得单独导入。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 15:20:25 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-4-10 16:00 编辑

messagebox 是 tkinter 包中的另一个文件,from tkinter import * 并不会导入这个文件,只会导入 tkinter 包中 __init__.py 的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 15:34:59 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-10 15:20
messagebox 是一个包,from tkinter import * 并不会导入包,只会导入 tkinter 本身的内容

请问包是指什么呢,tkinter是一个文件包含了很多模块,还是说只是一个模块呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 15:40:01 | 显示全部楼层
shatanzongcai 发表于 2020-4-10 15:34
请问包是指什么呢,tkinter是一个文件包含了很多模块,还是说只是一个模块呢?


tkinter是一个文件夹,一个文件夹就是一个包
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 15:43:59 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-10 15:40
tkinter是一个文件夹,一个文件夹就是一个包

也就是说其实messagebox是文件夹中的另外一个文件夹吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 15:56:56 | 显示全部楼层    本楼为最佳答案   
shatanzongcai 发表于 2020-4-10 15:43
也就是说其实messagebox是文件夹中的另外一个文件夹吗

那啥,很抱歉,刚才说错了一点,messagebox不是一个包,只是一个文件,但tkinter是一个包,messagebox就在tkinter里。
你可以去
你python的安装目录\Lib\tkinter
来观察这个结构
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 16:07:46 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-10 15:56
那啥,很抱歉,刚才说错了一点,messagebox不是一个包,只是一个文件,但tkinter是一个包,messagebox就 ...

我了解了tkinter和messagebox的关系,我顺便打开了__init__那个模块里面看了一下,发现Label,Message,Menubutton之类的东西包含在这个文件里,所以说,当我使用from tkinter import * 实际上我是在调用 __init__这个模块吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 16:10:22 | 显示全部楼层
shatanzongcai 发表于 2020-4-10 16:07
我了解了tkinter和messagebox的关系,我顺便打开了__init__那个模块里面看了一下,发现Label,Message,Me ...

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

使用道具 举报

 楼主| 发表于 2020-4-10 16:13:01 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 05:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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