TopLevel 与 Frame 类似,但它包含窗体属性(如 Title)
创建简单的Toplevel
代码:
代码语言:javascript复制import tkinter as tk
root = tk.Tk()
t1 = tk.Toplevel()
# 为了区别 root 和 tl,我们向 tl 中添加了一个 Label
tk.Label(t1, text='hello label').pack()
root.mainloop()
效果:
运行结果生成了两个窗体,一个是 root 启动的,另一个则是 Toplevel 创建的,它包含有一个 label;关闭 tl则没有退出程序,Tk 仍旧工作;若关闭 Tk,整个 Tk 结束 tl 也结束,它不能单独存在
设置 Toplevel 的属性
title设置标题
geometry 设置宽和高
代码:
代码语言:javascript复制import tkinter as tk
root = tk.Tk()
t1 = tk.Toplevel()
# 设置t1的标题
t1.title('hello Toplevel')
# 设置t1的宽和高
t1.geometry('400x300')
# 为了区别 root 和 tl,我们向 tl 中添加了一个 Label
tk.Label(t1, text='hello label').pack()
root.mainloop()
效果:
使用 Toplevel 自己制作提示框
代码:
代码语言:javascript复制import tkinter as tk
root = tk.Tk()
mbyes, mbyesno, mbyesnocancel, mbyesnoabort = 1, 2, 3, 4
# 定义一个消息对话框,依据传入的参数不同,弹出不同的提示信息
def messagebox(): # 没有使用传参
mbtype = mbyesno
textshow = 'yesno'
if mbtype == mbyes:
textshow = 'yes'
elif mbtype == mbyesno:
textshow = 'yesno'
elif mbtype == mbyesnocancel:
textshow = 'yesnocancel'
elif mbtype == mbyesnoabort:
textshow = 'yesnoabort'
t1 = tk.Toplevel(height=100, width=300)
tk.Label(t1, text=textshow).pack()
# 由 Button 来启动这个消息框,因为它使用了空的回调函数,故 messageBox 改为了无参数形式,使用了固定值yesno
tk.Button(root, text='click me', command=messagebox).pack()
root.mainloop()
效果: