Python基于tkinter.messagebox实现简易消息框、对话框

近期搞了个Python脚本,需要几个简易的对话框,显然引用PyQT、wxPython有些大动干戈,且这些库搞进来打包成exe又大了不少,所有选择使用自带库tkikter,功能其实很全,只怪自己之前修行不到家啊。。。so,简单mark下

库的导入不多说,走起,,,

import tkinter
import tkinter.messagebox

其中涉及到提示框如下:

tkinter.messagebox.showinfo(title=None, message=None)
tkinter.messagebox.showwarning(title=None, message=None)
tkinter.messagebox.showerror(title=None, message=None)

其中涉及到对话框如下:

tkinter.messagebox.askquestion(title=None, message=None)
tkinter.messagebox.askokcancel(title=None, message=None)
tkinter.messagebox.askyesno(title=None, message=None)
tkinter.messagebox.askretrycancel(title=None, message=None)
tkinter.messagebox.askyesnocancel(title=None, message=None)

看函数名称其实也能猜个大概,其中 askyesnocancel有三个按钮,666 ~~~

以askyesno为例,简单调用试试

txt=tkinter.messagebox.askyesno('提示', '要执行此操作吗')

理论上两个按钮,点击“是(Y)”返回True,点击“否(N)”返回Fasle;实际调用对话功到时没啥问题,然而出现了如下所示框分离,显然不符合预期,一脸懵逼 。。。

Python基于tkinter.messagebox实现简易消息框、对话框_第1张图片

后来查了下,得想办法把主体框隐藏掉,所以简单如下处理了下,对话框如下所示,看着也顺眼多了。

其它提示框、对话框用法相同。

def message_askyesno():
    top = tkinter.Tk()  # *********
    top.withdraw()  # ****实现主窗口隐藏
    top.update()  # *********需要update一下
    txt=tkinter.messagebox.askyesno("提示","要执行此操作?")
    top.destroy()
    return txt

message_askyesno()

Python基于tkinter.messagebox实现简易消息框、对话框_第2张图片

你可能感兴趣的:(Mark)