1、Tkinter

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 redgreenblue

组件

在 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。

组件的使用:

  1. 各个组件都有相应的类,我们可以通过⾯向对象的⽅式去使⽤它们。
  2. 这些组件的使⽤也很相似,在实例化这些组件的时候,第⼀个参数都是⽗窗⼝或者⽗组件,后⾯跟着的就是该组件的⼀些属性,⽐如上⾯我们学到的 Label 的 text属性和 background 属性。
  3. 多个组件的位置控制⽅式也很相似,我们可以⽤ pack ⽅法来进⾏简单的布局。
  4. 组件也会有些⽅法是共⽤的,⽐如 configure ⽅法来设置属性等等。

窗口

Tkinter 的窗口是基于对象的,主要包含以下两种类型的窗口:

窗口常用属性

创建子窗口

import tkinter as tk

# 主窗口
root = tk.Tk()
root.title('主窗口')

# 子窗口
top_level = tk.Toplevel()
top_level.title('子窗口')


root.mainloop()

image-20250415143445621

常用方法

下边这一系列方法用于与窗口管理器进行交互。他们可以被 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()都将运行,但是任何访问任何窗口小部件的尝试(例如,从条目窗口小部件获取值)都将失败,因为该窗口小部件不再存在。