Tkinter是Tk GUI工具包的Python绑定包。它是Tk GUI工具包的标准Python接口,并且是Python的业界标准GUI工具包。Tkinter同时也包含在Python的Linux、Microsoft Windows和Mac OS X标准库中。Tkinter的名字来自Tk Interface。
Tkinter 是 Python 内置的包,可以使用python -m tkinter
会弹出一个简单的 Tk 界面窗口,还会显示当前安装的 Tcl/Tk 版本。
创建一个文件hello_world.py
,并写入如下代码
#导入Tkinter模块,并用别名tk引用它。
import tkinter as tk
#创建一个顶级窗口(root window),这是整个GUI程序的基础。
root = tk.Tk()
#创建一个标签(Label),设置其初始文本为"Click the button to say hello!",并将其添加到根窗口中。
lable = tk.Label(root,text="Click the button to say hello!")
#pack()方法用于将控件放置在父容器中,并自动调整它们的大小和位置。
lable.pack()
#定义一个函数say_hello,当按钮被点击时,这个函数会被调用。 这个函数会更新标签(label)的文本为"Hello World!"。
def say_hello():
lable.config(text='Hello World!')
#创建一个按钮(Button),设置其文本为"SAY Hello",并将其命令属性设置为say_hello函数。这意味着当用户点击此按钮时,say_hello函数将被调用。
button = tk.Button(root, text="Say Hello", command=say_hello)
button.pack()
#最后,进入主循环。在此过程中,程序会持续监听用户的操作,如点击按钮等,并作出相应的响应。
root.mainloop()
执行python hello_world.py
,会看到创建的窗口
import tkinter as tk
root = tk.Tk()
# 自定义字体
custom_font = ('Arial', 14, 'bold')
# 应用字体、自定义背景颜色
lable = tk.Label(root,text="Click the button to say hello!",font=custom_font,bg='red')
lable.pack()
def say_hello():
lable.config(text='Hello World!')
# 应用字体、自定义背景颜色
button = tk.Button(root, text="Say Hello", command=say_hello,font=custom_font,bg='red')
button.pack()
root.mainloop()
字体名称 | 大小 | 粗体样式 | 颜色 |
---|---|---|---|
Arial 、 宋体 |
1~100 |
bold |
red 、green 、blue |
在 tkinter 中,有 21 个核⼼组件,它们提供 了GUI开发的完整功能,因为使⽤频率较⾼。
这 21 个核⼼组件是 : Label、Button、Entry、Menu、 Radiobutton 、Checkbutton、Text、Image、Canvas、Frame、LabelFrame、Toplevel、 Listbox、Menubutton、Message、OptionMenu、PaneWindow 、 Scale 、Scrollbar 、Spinbox、Bitmap。
组件的使用:
Tkinter 的窗口是基于对象的,主要包含以下两种类型的窗口:
主窗口(Main Window):由 Tkinter.Tk()
构造函数创建,是程序的主要窗口。
子窗口(Toplevel Window):由 Tkinter.Toplevel()
构造函数创建,可以从主窗口中独立出来。
title
:设置窗口的标题。geometry
:设置窗口的尺寸和位置。minsize
和 maxsize
:设置窗口的最小和最大尺寸。resizable
:设置窗口是否可调整大小。iconphoto
:设置窗口的图标。import tkinter as tk
# 主窗口
root = tk.Tk()
root.title('主窗口')
# 子窗口
top_level = tk.Toplevel()
top_level.title('子窗口')
root.mainloop()
下边这一系列方法用于与窗口管理器进行交互。他们可以被 Tk(主窗口)进行调用,同样也适用于 Toplevel(子窗口)。
root.geometry("widthxheight+x+y") # 例如:"400x300+100+200"
root.title("窗口标题")
root.iconphoto(False, tk.PhotoImage(file="icon.png"))
root.resizable(width=False, height=True) # 宽度不可调整,高度可调整
在 Tkinter 中,窗口需要进入事件循环才能正常工作。事件循环通过 mainloop()
方法启动:
root.mainloop()
root.destroy()
root.quit()
导致mainloop退出。解释器仍然完整无缺,所有小部件也一样。如果调用此函数,则可以使代码在调用之后执行root.mainloop()
,并且该代码可以与小部件交互(例如,从输入小部件获取值)。
root.destroy()
将破坏所有小部件并退出mainloop。调用之后的任何代码root.mainloop()
都将运行,但是任何访问任何窗口小部件的尝试(例如,从条目窗口小部件获取值)都将失败,因为该窗口小部件不再存在。