近期搞了个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;实际调用对话功到时没啥问题,然而出现了如下所示框分离,显然不符合预期,一脸懵逼 。。。
后来查了下,得想办法把主体框隐藏掉,所以简单如下处理了下,对话框如下所示,看着也顺眼多了。
其它提示框、对话框用法相同。
def message_askyesno():
top = tkinter.Tk() # *********
top.withdraw() # ****实现主窗口隐藏
top.update() # *********需要update一下
txt=tkinter.messagebox.askyesno("提示","要执行此操作?")
top.destroy()
return txt
message_askyesno()