6.9、子窗体:
用Toplevel可新建一个显示在最前面的子窗体,其通式为: 字体实例名=Toplevel(根窗体),子窗体与根窗体类似,也可设置title、geomerty等属性,并在画布上布局其他控件。如下的例子:在根窗体上创建菜单,触发创建一个新的窗体
from tkinter import * def newwind(): winNew = Toplevel(root) winNew.geometry('320x240') winNew.title('新窗体') lb2 = Label(winNew,text='我在新窗体上') lb2.place(relx=0.2,rely=0.2) btClose=Button(winNew,text='关闭',command=winNew.destroy) btClose.place(relx=0.7,rely=0.5) root = Tk() root.title('新建窗体实验') root.geometry('320x240') lb1 = Label(root,text='主窗体',font=('黑体',32,'bold')) lb1.place(relx=0.2,rely=0.2) mainmenu = Menu(root) menuFile = Menu(mainmenu) mainmenu.add_cascade(label='菜单',menu=menuFile) menuFile.add_command(label='新窗体',command=newwind) menuFile.add_separator() menuFile.add_command(label='退出',command=root.destroy) root.config(menu=mainmenu) root.mainloop()
关闭窗体程序运行的方法通常用 destory(),而不建议用 quit()。用Toplevel 所创建的子窗体是非模式(Modeless)的窗体,虽然初建时子窗体在最前面,但根窗体上的控件实例也是可以被操作的。
6.10、模式对话框(Modal):
是相对于前面介绍的非模式窗体而言的,所弹出的对话框必须应答,在关闭之前无法操作其后面的其他窗体。常见的模式对话框有消息对话框、输入对话框、文件选择对话框、颜色选择对话框等。
消息对话框: 引用 tkinter.messagebox 包,可使用消息对话框函数。执行这些函数,可弹出模式消息对话框,并根据用户的响应但会一个布尔值。其通式为:
消息对话框函数(<title=标题文本>,<message=消息文本>,[其他参数])
看下面的例子:单击按钮,弹出确认取消对话框,并将用户回答显示在标签中。效果如下:
from tkinter import * import tkinter.messagebox def xz(): answer=tkinter.messagebox.askokcancel('请选择','请选择确定或取消') if answer: lb.config(text='已确认') else: lb.config(text='已取消') root = Tk() lb = Label(root,text='') lb.pack() btn=Button(root,text='弹出对话框',command=xz) btn.pack() root.mainloop()
输入对话框:
引用tkinter.simpledialog包,可弹出输入对话框,用以接收用户的简单输入。输入对话框常用 askstring()、askfloat()和askfloat() 三种函数,分别用于接收字符串、整数和浮点数类型的输入。
如下面的例子:单击按钮,弹出输入对话框,接收文本输入显示在窗体的标签上。如下:
from tkinter.simpledialog import * def xz(): s=askstring('请输入','请输入一串文字') lb.config(text=s) root = Tk() lb = Label(root,text='') lb.pack() btn=Button(root,text='弹出输入对话框',command=xz) btn.pack() root.mainloop()