用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)的窗体,虽然初建时子窗体在最前面,但根窗体上的控件实例也是可以***作的。
3.9 模式对话框(Modal)
是相对于前面介绍的非模式窗体而言的,所弹出的对话框必须应答,在关闭之前无法操作其后面的其他窗体。常见的模式对话框有消息对话框、输入对话框、文件选择对话框、颜色选择对话框等。
3.9.1 交互对话框
(一)、消息对话框: 引用 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()
3.9.2 文件选择对话框