鬼少 发表于 2025-3-1 18:59:53

py3无法识别messagebox

from tkinter import *

messagebox.askokcancel('pratice','去逛街?')

mainloop()
                                             

运行上述代码报如下错误:
Traceback (most recent call last):
File "D:/program/python_code/tk_meassage.py", line 3, in <module>
    messagebox.askokcancel('pratice','去逛街?')
NameError: name 'messagebox' is not defined

FishC 发表于 2025-3-1 18:59:58

在使用 messagebox 的时候,你需要单独导入 tkinter.messagebox。可以这样修改你的代码:

from tkinter import *
from tkinter import messagebox

messagebox.askokcancel('pratice','去逛街?')

mainloop()

请确保你的代码中导入了 tkinter.messagebox,然后就可以正常运行这个程序了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

鬼少 发表于 2025-3-1 19:03:46

FishC 发表于 2025-3-1 18:59
在使用 messagebox 的时候,你需要单独导入 tkinter.messagebox。可以这样修改你的代码:




修改上述代码, 可以弹出对话框, 但是点击对话框中“确定”按钮的时候, 会报如下错误:
Traceback (most recent call last):
File "D:/program/python_code/tk_meassage.py", line 7, in <module>
    mainloop()
File "D:\program\Python\Python312\Lib\tkinter\__init__.py", line 653, in mainloop
    _get_default_root('run the main loop').tk.mainloop(n)
File "D:\program\Python\Python312\Lib\tkinter\__init__.py", line 323, in _get_default_root
    raise RuntimeError(f"Too early to {what}: no default root window")
RuntimeError: Too early to run the main loop: no default root window

FishC 发表于 2025-3-1 19:03:53

鬼少 发表于 2025-03-01 19:03
FishC 发表于 2025-3-1 18:59
在使用 messagebox 的 ...

这个错误是因为在调用 mainloop() 时,没有默认的根窗口。你需要创建一个 Tk 根窗口。下面是修改后的完整代码:


from tkinter import *
from tkinter import messagebox

root = Tk()
root.withdraw()# 隐藏主窗口

messagebox.askokcancel('pratice', '去逛街?')

root.mainloop()


这段代码中,我们先创建一个隐藏的 Tk 根窗口 (root.withdraw()),然后再调用 messagebox.askokcancel() 方法,最后运行 root.mainloop()。

这样,当你点击对话框中的“确定”按钮时,就不会再出现错误了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

鬼少 发表于 2025-3-1 19:04:48

鬼少 发表于 2025-3-1 19:03
修改上述代码, 可以弹出对话框, 但是点击对话框中“确定”按钮的时候, 会报如下错误:
Traceback (mo ...

需要添加 root=TK()语句

FishC 发表于 2025-3-1 19:04:51

鬼少 发表于 2025-03-01 19:04
鬼少 发表于 2025-3-1 19:03
修改上述代码, 可以弹 ...

是的,你需要创建一个 Tk 根窗口,这样才能避免运行时错误。以下是修改后的代码:


from tkinter import *
from tkinter import messagebox

root = Tk()
root.withdraw()# 隐藏主窗口

messagebox.askokcancel('practice', '去逛街?')

root.mainloop()


这样可以确保弹出对话框并正常工作。解决方案中使用 root.withdraw() 来隐藏默认的 Tk 主窗口,仅显示消息对话框。请运行这段代码来查看效果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: py3无法识别messagebox