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 #
创建一个文件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。
组件的使用:
- 各个组件都有相应的类,我们可以通过⾯向对象的⽅式去使⽤它们。
- 这些组件的使⽤也很相似,在实例化这些组件的时候,第⼀个参数都是⽗窗⼝或者⽗组件,后⾯跟着的就是该组件的⼀些属性,⽐如上⾯我们学到的 Label 的 text属性和 background 属性。
- 多个组件的位置控制⽅式也很相似,我们可以⽤ pack ⽅法来进⾏简单的布局。
- 组件也会有些⽅法是共⽤的,⽐如 configure ⽅法来设置属性等等。
窗口 #
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()都将运行,但是任何访问任何窗口小部件的尝试(例如,从条目窗口小部件获取值)都将失败,因为该窗口小部件不再存在。