Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >tkinter messagebox的子导入问题

tkinter messagebox的子导入问题
EN

Stack Overflow用户
提问于 2016-02-24 21:22:56
回答 1查看 413关注 0票数 1

我正在用tkinter编写一个GUI应用程序,现在我想使用tkinter内置的消息盒,所以我想,既然我已经导入了tkinter (作为tk),它将只是tk.messagebox.showerror(),但这或多或少地是工作的.

当我在空闲中运行它时,它没有问题,但是如果我在终端中使用python <module-name>.py,它会抛出一个AttributeError。

以下是我能做的最简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk

root = tk.Tk()
tk.messagebox.showerror(title="Test Error", message="This is a test")
root.mainloop()

现在,如果我将from tkinter import messagebox作为一个导入添加到终端(保持tk.messagebox.showerror)运行时,这段代码可以工作,这使事情变得更加奇怪。显然,它仍然必须被看作是tkinter的一个属性,那么为什么没有显式导入,它就不能工作呢?

我想我并不是真的在寻找这样的解决方案(因为我找到了某种方法让它工作),但更多的是对为什么会发生这种情况的解释。

任何建议都是欢迎的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-25 15:24:30

这个问题以前是以“为什么import tkinter; tkinter.font在空闲环境中工作而不是在python本身中工作”的形式出现的?解释是import工作方式与空闲当前如何设置执行代码的子进程之间的交互。

导入: sys.modules是将模块名映射到导入的模块对象的字典。在高级别上,import modname相当于以下内容.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if modname not in sys.modules:
    sys.modules[modname] = module(modname)
modname = sys.modules[modname]

对于python编码的包,模块是从modname/__init__.py创建的。导入包并不导入其子模块。也就是说,它不运行modname/submodule.py。随后,导入子模块将子模块添加到sys.modules,并将其作为属性添加到包中。导入模块之后,将现有模块绑定到指定的名称,该模块有一个子模块作为属性。

空闲:当前,当空闲设置运行代码的子进程时,它直接或间接地导入tkinter及其子模块。(代码位于idlelib/run.py中,它导入了idlelib模块。)这可以通过运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for name in sys.modules:
    if name.startswith('tkinter'):
        print(name)

当空闲开始的时候。因此,当您运行import tkinter时,它是进程中的第二个tkinter导入,名称'tkinter'绑定到现有的tkinter模块,该模块将子模块作为属性。

解决方案:空闲的目的是开发运行在python中的代码。在python中运行不运行的bug是空闲的错误。我正在重构idlelib上工作,这样上面的内容就不会打印任何内容了。唯一需要的tkinter模块是tkinter.messagebox,只有当出现问题时才需要这个模块来阻止代码的运行。因此,可以将messagebox的导入延迟到需要时,这是非常少见的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35619027

复制
相关文章
Tkinter messagebox弹窗
module 'tkinter' has no attribute 'messagebox'
演化计算与人工智能
2020/08/14
1.3K0
Tkinter messagebox弹窗
【tkinter系列 第三课 messageBox窗口部件 】
python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来学习如何使用python自带的tkinter库来实现。
叶子陪你玩
2020/03/12
2.1K0
python的tkinter模块的导入_numpy scipy
在python项目使用cxfreeze进行打包的时候,如果 脚本里包括numpy的引用时,在打包时会报
全栈程序员站长
2022/09/28
1.3K0
python的tkinter模块的导入_numpy scipy
MessageBox
MessageBox MessageBox指的是显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。 函数 函数原型 //一般形式 int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType); //其实它是根据Unicode定义的 WINUSERAPI int WINAPI MessageBoxA(
繁依Fanyi
2023/05/07
4680
MessageBox
elementUI MessageBox prompt模式下异步提交问题
最近写项目发现,使用elementUI的MessageBox的prompt 异步提交数据时,存在点了确定弹窗关闭并且不再执行then下面的指令,自然也就没办法继续执行。
紫旭Blog - blog.zixutech.cn
2019/12/30
3.2K0
python开发_tkinter_多级子菜单
==========================================================
Hongten
2018/09/13
1.9K0
python开发_tkinter_多级子菜单
python学习之tkinter模块-猜数字游戏
一些常用的tkinter模块参数见这里:https://www.cnblogs.com/aland-1415/p/6849193.html
烤粽子
2021/07/07
1.1K0
python学习之tkinter模块-猜数字游戏
python GUI界面设计的那些事(二)
python 可以通过 tkinter, pyqt5或者pyside2等工具库实现界面设计。
叶子陪你玩
2021/04/13
3.3K0
python GUI界面设计的那些事(二)
Python tkinter 制作一个经典的登录界面和点击事件
Tkinter(即 tk interface) 是 Python 标准 GUI 库,简称 “Tk”;从本质上来说,它是对 TCL/TK 工具包的一种 Python 接口封装。 Tkinter 是 Python 自带的标准库,因此无须另行安装,它支持跨平台运行,不仅可以在 Windows 平台上运行,还支持在 Linux 和 Mac 平台上运行。
松鼠爱吃饼干
2022/12/05
2.8K0
Python tkinter 制作一个经典的登录界面和点击事件
零基础Python教程047期 GUI窗体界面编程,迈出软件开发的第一步
函数:在编程中,int函数、list函数、str函数、float函数等,这些都是python的sdk中自带函数。
刘金玉编程
2020/09/10
1.1K0
MessageBox()功能
MessageBox()功能。这是一个非常频繁使用的Win32 API,在屏幕上显示一个窗体,提出问题,并等待用户输入。它的原型是 int MessageBox(HWND hwnd,LPCTSTR lptext, LPCTSTR lpcation,UINT utype) hwnd 句柄。设置为NULL,表示使用Windows 桌面作为其父窗体。 lptext 为一个以NULL结尾的字符串。表示包括文本。 lpcaption 为以NULL结尾的字符串,为消息框标题。
全栈程序员站长
2022/07/11
6590
Python+tkinter实现弹出模态子窗口
程序运行后显示主窗口,单击主窗口上的按钮之后弹出模态子窗口,主窗口不再响应鼠标和键盘操作,直到模态子窗口关闭之后主窗口再恢复对鼠标和键盘操作的响应。
Python小屋屋主
2022/06/05
4.3K0
Python+tkinter实现弹出模态子窗口
Tkinter学习笔记(二)
至此,组件部分就学完了,对于布局其实很难。所以还是放弃采用grid的方式。我觉得直接设置位置挺好的。
写一点笔记
2020/11/02
4010
Tkinter学习笔记(二)
【说站】python如何创建操作页面
Python自带tkinter模块,本质上是GUI工具包TK的Python编程界面,提供了快速方便地创建GUI应用的方法。
很酷的站长
2022/11/23
5610
【说站】python如何创建操作页面
python的tkinter编程(一)什么是tkinter,第一个基于tkinter的GUI编程,弹出窗口,创建按钮,并且在这个按钮上面加点击事件
1 创建出一个窗口 2 在窗口上面布局组件 3 让各种各样的组件活起来,也就是让各个组件有事件
一写代码就开心
2020/11/20
2.8K0
python的tkinter编程(一)什么是tkinter,第一个基于tkinter的GUI编程,弹出窗口,创建按钮,并且在这个按钮上面加点击事件
python3 五子棋(tkinter)
BOARD_WIDTH = 535 BOARD_HEIGHT = 536 BOARD_SIZE = 15
用户5760343
2019/12/12
1K0
事件处理
事件处理总体上还是比较顺利的首先要导入一个tkinter.messagebox的一个类 用于显示提示信息,这一点尤为重要第一次他并没有去选择一个可以更改的一个messagebox显示的内容
用户8447427
2022/08/18
4950
事件处理
Python学习之GUI--登录系统界面篇
tkinker包:Python2.5之后,tkinker包是自带的,我们直接导入就好了
K同学啊
2019/01/22
5.5K2
Python 之 tkinter 学习笔记
最近有个小需求需要实现,最后要给出一个 GUI 界面,想了想还是不用 c++ 写 MFC 了,因为还涉及到网络编程,感觉还是简单事情简单做,然后转手写 python,刚开始想尝试 pyqt,但感觉好像还是有点麻烦,本来就只是做个插件,最后就大概看了一下内置的 tkinter,一边写一边学也马上就上手了,总的来说感觉还是简单的。
EmoryHuang
2022/10/31
7K0
Python 之 tkinter 学习笔记
点击加载更多

相似问题

tkinter中的messagebox问题

12

当导入tkinter的"messagebox“模块时,”导入tkinter.messagebox“语法不起作用吗?

21

Tkinter MessageBox误差

41

为什么我需要导入tkinter.messagebox,而不需要在导入tkinter之后导入tkinter.Tk()?

20

tkinter删除messagebox内容

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文