Python 3 – Tkinter Toplevel
Tkinter是Python中一个用于GUI编程的标准模块,它包含许多类和方法,提供了在图形用户界面上创建图形组件(例如按钮、标签、文本框、列表框等)的功能。在Tkinter中,Toplevel组件是一个子窗口,也是一个独立的容器,它可以包含自己的组件。
本文将介绍如何在Python 3中使用Tkinter的Toplevel组件来创建子窗口,并向这个子窗口中添加组件并设置其属性。
创建Toplevel窗口
在Tkinter中,使用Toplevel类来创建子窗口。Toplevel构造函数的基本用法如下:
top = Toplevel(master, **options)
其中,master
表示Toplevel窗口的主窗口,options
是一个可选参数字典,用于设置窗口的属性。例如,下面的代码创建一个新的Toplevel窗口,并将其作为主窗口的子窗口:
import tkinter as tk
root = tk.Tk()
root.title('Main Window')
# 创建一个新的Toplevel窗口
top = tk.Toplevel(root)
top.title('Sub Window')
root.mainloop()
向Toplevel窗口中添加组件
Toplevel窗口是一个独立的容器,它可以包含自己的组件。下面的代码演示如何向一个Toplevel窗口中添加Label、Entry和Button组件:
import tkinter as tk
def showinfo():
print('Your name is:', name.get())
print('Your age is:', age.get())
root = tk.Tk()
root.title('Main Window')
# 创建一个新的Toplevel窗口
top = tk.Toplevel(root)
top.title('Sub Window')
# 在Toplevel窗口中添加组件
tk.Label(top, text='Name:').grid(row=0, column=0)
name = tk.Entry(top)
name.grid(row=0, column=1)
tk.Label(top, text='Age:').grid(row=1, column=0)
age = tk.Entry(top)
age.grid(row=1, column=1)
tk.Button(top, text='Submit', command=showinfo).grid(row=2, column=0, columnspan=2)
root.mainloop()
上述代码中,先定义了一个showinfo()
函数,用于显示用户输入的信息。然后创建了一个新的Toplevel窗口,并在其中添加了Label、Entry和Button组件。
Toplevel窗口的属性设置
和其他Tkinter组件一样,Toplevel窗口也有众多的属性可以设置。下面的代码演示如何设置Toplevel窗口的大小、位置、背景色和大小不可改变的属性:
import tkinter as tk
root = tk.Tk()
root.title('Main Window')
# 创建一个新的Toplevel窗口
top = tk.Toplevel(root)
top.title('Sub Window')
# 设置Toplevel窗口的属性
top.geometry('300x200+500+200') # 设置大小和位置
top.configure(bg='blue') # 设置背景色
top.resizable(False, False) # 设置大小不可改变
root.mainloop()
上述代码中,设置了Toplevel窗口的大小、位置、背景色和大小不可改变的属性。执行上述代码,会弹出一个蓝色的子窗口,大小为300×200,位置在主窗口的右上角:
Toplevel窗口的生命周期
Toplevel窗口的生命周期和其他Tkinter组件类似,当主窗口被销毁时,所有的Toplevel窗口也会被销毁。下面的代码演示了如何在Toplevel窗口关闭时执行一些操作:
import tkinter as tk
def on_closing():
print('Closing Toplevel Window')
top.destroy()
root = tk.Tk()
root.title('Main Window')
# 创建一个新的Toplevel窗口
top = tk.Toplevel(root)
top.title('Sub Window')
# 绑定关闭事件
top.protocol('WM_DELETE_WINDOW', on_closing)
root.mainloop()
上述代码中,当用户关闭Toplevel窗口时,会调用on_closing()
函数。在该函数中,我们可以执行一些自定义的操作,例如保存数据等。执行上述代码,并关闭子窗口时,会在控制台输出如下信息:
Closing Toplevel Window
结论
本文介绍了Tkinter中Toplevel窗口的基本用法,包括创建Toplevel窗口、向Toplevel窗口中添加组件、设置Toplevel窗口的属性和处理Toplevel窗口的生命周期。掌握了这些内容之后,你就可以使用Tkinter的Toplevel组件来创建一个完整的GUI应用程序了。