tkinter中messagebox如何有yes和no两个按钮
时间: 2024-02-01 17:17:02 浏览: 210
在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()
```
运行代码,点击按钮后会弹出一个对话框,包含一个“是”和一个“否”的按钮。当用户点击“是”按钮时,控制台会输出“执行操作”,当用户点击“否”按钮时,控制台会输出“取消操作”。
相关问题
python脚本 win32con.MB_YESNO怎么判定结果
在Windows平台下,Python的`win32con`模块提供了一些常量,用于创建`MessageBox`(消息框),其中`MB_YESNO`表示消息框包含“是”和“否”两个选项。当你调用`showinfo`, `showwarning`, 或 `showerror`等方法并传入`win32con.MB_YESNO`作为第二个参数时,它会显示一个带有一个确认按钮(默认是"OK","Yes"和"No")的对话框。
例如:
```python
from tkinter import messagebox
import win32con
answer = messagebox.askyesno("标题", "这是一个包含是/否选择的问题", icon=win32con.INFO)
if answer == True:
# 用户选择了“是”
print("用户选择了‘是’")
elif answer == False:
# 用户选择了“否”
print("用户选择了‘否’")
else:
# 如果用户按下了取消按钮或未做选择
print("用户未做选择或点击了取消")
```
这里,`answer`变量的值为True代表选择了“是”,False代表选择了“否”。如果用户按下取消按钮或者没做选择,`answer`将为None。
python寫一個gui窗口,這個界面有菜單欄,菜單有子菜單,每個子菜單連接一個指定的excel表,在窗口上方添加一個工具欄位,顯示上傳和關閉按鈕,儅用戶選擇任意一個子菜單時將相應讀取excel中所有工作表並生成按鈕顯示在窗口左側竪著排列為防止應工作表過多需要添加滑動條來顯示數據,在右邊創建一個文本框,儅用戶點擊生成的按鈕時,這個文本框就顯示相應excel工作表數據的一列所有數據并在每行數據前面添加一個下拉輸入框,顯示在文本框中,一樣需要滾動條來滾動數據
好的,这是一个涉及到Excel文件读取、GUI界面设计和数据处理的问题,需要使用Python的一些库来实现。我推荐使用Tkinter作为GUI库,同时使用pandas作为Excel文件读取库和数据处理库,下面是实现该界面的代码:
```python
import tkinter as tk
from tkinter import messagebox, filedialog
import pandas as pd
class MainWindow:
def __init__(self):
self.root = tk.Tk()
self.root.title("Excel数据处理")
self.root.geometry("800x600")
self.create_menu()
self.create_toolbar()
self.create_scrollbar()
self.create_textbox()
self.root.mainloop()
def create_menu(self):
menubar = tk.Menu(self.root)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="打开", command=self.open_file)
filemenu.add_separator()
filemenu.add_command(label="退出", command=self.root.quit)
menubar.add_cascade(label="文件", menu=filemenu)
self.root.config(menu=menubar)
def create_toolbar(self):
toolbar = tk.Frame(self.root)
upload_button = tk.Button(toolbar, text="上传")
upload_button.pack(side="left", padx=5, pady=5)
close_button = tk.Button(toolbar, text="关闭")
close_button.pack(side="left", padx=5, pady=5)
toolbar.pack(side="top", fill="x")
def create_scrollbar(self):
self.scrollbar = tk.Scrollbar(self.root)
self.scrollbar.pack(side="right", fill="y")
def create_textbox(self):
self.textbox = tk.Text(self.root, yscrollcommand=self.scrollbar.set, wrap="none")
self.textbox.pack(side="left", fill="both", expand=True)
self.scrollbar.config(command=self.textbox.yview)
def open_file(self):
file_path = filedialog.askopenfilename()
if file_path:
self.df = pd.read_excel(file_path, sheet_name=None)
# 清空文本框
self.textbox.delete("1.0", tk.END)
# 创建工作表按钮
self.sheet_buttons = []
for sheet_name in self.df.keys():
sheet_button = tk.Button(self.root, text=sheet_name, command=lambda sheet_name=sheet_name: self.show_sheet_data(sheet_name))
sheet_button.pack(side="top", fill="x", padx=5, pady=5)
self.sheet_buttons.append(sheet_button)
def show_sheet_data(self, sheet_name):
self.textbox.delete("1.0", tk.END)
# 获取工作表数据
sheet_data = self.df[sheet_name]
# 创建下拉框
self.comboboxes = []
for i in range(sheet_data.shape[0]):
combobox = tk.ttk.Combobox(self.textbox, state="readonly", values=["Yes", "No"])
combobox.current(0)
combobox.grid(row=i, column=0, padx=5, pady=5)
self.comboboxes.append(combobox)
# 创建数据显示
for i in range(sheet_data.shape[0]):
for j in range(sheet_data.shape[1]):
tk.Label(self.textbox, text=str(sheet_data.iloc[i, j])).grid(row=i, column=j+1, padx=5, pady=5)
if __name__ == "__main__":
MainWindow()
```
这段代码实现了一个窗口,其中有菜单栏、工具栏、滚动条和文本框等控件。菜单栏中有“打开”和“退出”两个选项,点击“打开”会弹出文件选择对话框,选择一个Excel文件后会读取其数据并生成工作表按钮,这些按钮会显示在左侧,文本框会显示相应的Excel数据。此外,工具栏中还有“上传”和“关闭”两个按钮,点击“上传”可以上传数据到服务器,点击“关闭”可以关闭程序。当用户点击某个工作表按钮时,会显示相应的工作表数据,每行数据前面都会有一个下拉框,用户可以选择其中的一个选项。
阅读全文