tkinter中messagebox如何有yes和no两个按钮
时间: 2024-02-01 18:17:02 浏览: 37
在tkinter中的`messagebox`模块并没有直接提供带有yes和no两个按钮的对话框,但是可以通过`askyesno`方法来实现。
以下是一个示例代码:
```python
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
def show_yes_no_dialog():
result = messagebox.askyesno("标题", "确定执行操作吗?")
if result == True:
print("执行操作")
else:
print("取消操作")
button = tk.Button(root, text="打开对话框", command=show_yes_no_dialog)
button.pack()
root.mainloop()
```
运行代码,点击按钮后会弹出一个对话框,包含一个“是”和一个“否”的按钮。当用户点击“是”按钮时,控制台会输出“执行操作”,当用户点击“否”按钮时,控制台会输出“取消操作”。
相关问题
module 'tkinter.messagebox' has no attribute 'messagebox'
这个错误信息通常是因为在导入 tkinter 模块时,使用了错误的语法或者版本不兼容造成的。
在 Python 中,使用 tkinter 提供的 messagebox 模块可以弹出消息框。正确的导入方式应该是:
```python
from tkinter import messagebox
```
如果你使用了其他语法,例如:
```python
import tkinter.messagebox
```
那么在调用时就需要使用 `tkinter.messagebox` 这个命名空间,而不是 `messagebox` 模块本身。如果你的代码中出现这个错误,可以检查一下你的导入语句是否正确。
如果你使用的 Python 版本较老,也有可能会出现这个错误信息。因为在旧版的 tkinter 中,并没有提供 `messagebox` 这个子模块,而是直接将弹出消息框的方法集成在了 tkinter 模块中。所以,如果你使用的是 Python 2.x 版本,那么应该使用以下方式导入:
```python
import Tkinter
import tkMessageBox
Tkinter.tkMessageBox.showinfo("Title", "Message")
```
如果你使用的是 Python 3.x 版本,那么需要使用以下方式:
```python
import tkinter as tk
from tkinter import messagebox
tk.messagebox.showinfo("Title", "Message")
```
tkinter中messagebox始终置顶
在tkinter中,messagebox默认是置顶的,即弹出窗口会一直在最上层,直到用户进行操作或关闭窗口。如果你想要更改这个默认行为,可以使用messagebox的parent参数来指定父窗口,这样弹出窗口就会在父窗口之上而不是整个屏幕之上。下面是一个例子:
```python
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
def hit_me():
messagebox.showinfo(title='Hi', message='info', parent=root)
root.geometry('200x200')
tk.Button(root, text='点我', command=hit_me).pack()
root.mainloop()
```
在这个例子中,我们创建了一个主窗口root,并在其中创建了一个按钮,点击按钮会弹出一个messagebox。我们使用messagebox的showinfo方法来创建一个信息提示框,并将parent参数设置为root,这样弹出窗口就会在root窗口之上而不是整个屏幕之上。