Tkinter模块详解 | CSDN创作打卡

之前,我们在 Pycharm 中都是在 IDLE 或命令提示窗口进行简单的输入输出,但当前流行的桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单、按钮等图形化元素触发指令,并从标签、对话框等图型化显示容器中获取人机对话信息。

Python自带的 tkinter 模块,实质上是一种面向对象的 GUI 工具包,提供了创建 GUI 应用程序的方法。 其图像化编程的基本步骤为:
1)导入 tkinter 模块;
2)创建 GUI 根窗体;
3)在跟窗体中添加人机交互控件并编写相应的函数;
4)在主事件循环中等待用户触发事件响应。

  1. 我的第一个 Tkinter 窗口程序

例:编写程序,窗口大小为 350×200,标题为 “我的第一个 Tkinter 窗口”。

导入 thinter 库
import tkinter
创建顶层窗口对象
m = tkinter.Tk()
设置窗口标题
m.title("我的第一个 Tkinter 窗口")
设置窗口大小,350x200,注意不是*,而是字母x
m.geometry("350x200")
主事件循环
m.mainloop()

'''
第一句代码,import tkinter 导入 Tkinter 模块,如果使用 import tkinter as tk,
则后面代码中使用 tk. 调用方法;如果使用 from tkinter import *,
则后面直接使用调用方法。使用 Tkinter 的 GUI 程序必须先导入 Tkinter 模块,
以获得 Tkinter 的访问权。

第二句代码,m=tkinter.Tk() 创建一个顶层窗口对象。顶层对象是指在程序中独立显示的部分,
可以在 GUI 程序中创建多个顶层窗口,但其中只能有一个是根窗口。

第三局代码,m.title("我的第一个 Tkinter 窗口"),设置窗口标题。m 对象可以有多个方法
设置窗口其他属性,如窗口大小、窗口位置等。

第四句代码,设置窗口大小,使用 resizable(width=False, height=True) 可以控制窗口大小
是否改变。

第五句代码,m.mainloop() 进入主事件循环。这是一个无线循环,通常是程序的最后一段代码。
'''

Tkinter模块详解 | CSDN创作打卡
  1. 在窗口中添加组件

为窗口加入组件,创建并运行 Tkinter GUI 程序:
1)导入 Tkinter 模块;
2)创建一个顶层窗口对象;
3)在顶层窗口中加入 GUI 组件;
4)把 GUI 组件与事件处理代码相连;
5)进入主事件循环。

例:编写一个程序,点击窗口中的按钮,弹窗出现。

导入 thinter 库
import tkinter
import tkinter.messagebox

创建顶层窗口对象
m = tkinter.Tk()
设置窗口标题
m.title("我的第一个 Tkinter 窗口")
设置窗口大小,350x200,注意不是*,而是字母x
m.geometry("350x200")

单击按钮响应函数
def button_clicked():
    tkinter.messagebox.showinfo("Message", "hello word!")

定义按钮
btn1 = tkinter.Button(m, text="hello", command=button_clicked)
btn1.pack()
主事件循环
m.mainloop()

'''
本程序先导入了 Tkinter 模块和模块的弹窗组件。

使用 btn1 = tkinter.Button(m, text="hello", command=button_clicked) 语句
定义一个按钮对象,括号中的属性参数:m 是定义按钮所在的窗口,text 是按钮的标题,
command 调用函数。

def button_clicked():tkinter.messagebox.showinfo("Message", "hello word!")
定义了一个函数,该函数的功能是弹出一个弹窗提示信息,弹窗名称是 "massage",
提示信息是 "hello word!"
'''

Tkinter模块详解 | CSDN创作打卡
  1. 组件坐标布局管理器

窗口中的各组件需要我们自定义布局,就像网页的前端文件一样。组件的布局通常有三种方法:pack(顺序布局)、grid(行列布局)、place(坐标布局)。

3.1 pack 坐标布局管理器

pack 坐标布局管理器采用块的方式组织组件。pack 根据组件创建生成的顺序将子组件添加到父组件中,通过设置选项,可以控制子组件的位置等。采用 pack 的代码量最少,所以调用子组件的方法 pack 后,该子组件在其父组件中采用 pack 布局。

pack(option=value,...)

pack 方法提供的选项:

选项作用取值范围side停靠在父组件的哪边top(默认值)、buttom、left、rightanchor停靠对齐方式对应东南西北中及四个角:n、s、w、e、center(默认值)、nw、sw、se、nefill填充空间x、y、both、noneexpand扩展空间0、1ipadx、ipady组件在 x/y 方向上填充的空间大小单位:c(厘米)、m(毫米)、i(英寸)、p(打印机的点)padx、pady组件外部在 x/y 方向上填充的空间大小同上

例:使用 pack 方法编写一个用户登录窗口,要求有文本标题、文本框及两个按钮。

导入 thinter 库
from tkinter import *
import tkinter.messagebox

创建顶层窗口对象
m = tkinter.Tk()
设置窗口标题
m.title("登录")
界面分为上、中、下三个Frame,f1放置第一行标签和文本框
f1 = tkinter.Frame(m)
f1.pack()
f2放置第二行标签和文本框
f2 = tkinter.Frame(m)
f2.pack()
f3放置第三行两个按钮
f3 = tkinter.Frame(m)
f3.pack()
标签和单行文本框都放置在f1中,左停靠
Label(f1, text="用户名").pack(side=LEFT)
Entry(f1).pack(side=LEFT)
标签和单行文本框都放置在f2中,左停靠
Label(f2, text="密码").pack(side=LEFT)
Entry(f2, show="*").pack(side=LEFT)
两个按钮都放置在f3中
Button(f3, text="登录").pack(side=RIGHT)
Button(f3, text="取消").pack(side=LEFT)
主事件循环
m.mainloop()

Tkinter模块详解 | CSDN创作打卡

3.2 grid 坐标布局管理器

grid 坐标布局管理器采用控制行列的方式组织组件。grid 坐标布局采用表格形式的布局,可以实现复杂的页面。调用子组件的方法为 grid,该子组件在其父组件中采用 grid 布局。

grid(option=value, ...)

grid 方法提供的选项:

选项作用取值范围column单元格列号从0开始的正整数columnspan列跨度正整数row单元格行号从0开始的正整数rowspan行跨度正整数ipadx、ipady组件在 x/y 方向上填充的空间大小单位:c(厘米)、m(毫米)、i(英寸)、p(打印机的点)padx、pady组件外部在 x/y 方向上填充的空间大小单位:c(厘米)、m(毫米)、i(英寸)、p(打印机的点)sticky组件紧贴单元格东南西北中及四个角n、s、w、e、center(默认值)、nw、sw、se、ne,可以紧贴多个边角,如 tk.N+tk.S

例:使用 grid 方法编写一个用户登录窗口,要求有文本标题、文本框及两个按钮。

导入 thinter 库
from tkinter import *
import tkinter.messagebox

创建顶层窗口对象
m = tkinter.Tk()
设置窗口标题
m.title("登录")
用户名标签放置在第0行第0列
Label(m, text="用户名").grid(row=0, column=0)
用户名文本框放置在第0行第1列,跨两列
Entry(m).grid(row=0, column=1, columnspan=2)
密码标签放置在第1行第0列
Label(m, text="密码").grid(row=1, column=0)
用户名文本框放置在第1行第1列,跨两列
Entry(m, show="*").grid(row=1, column=1, columnspan=2)
登录按钮右侧紧贴
Button(m, text="登录").grid(row=3, column=1, sticky=E)
取消按钮左侧紧贴
Button(m, text="取消").grid(row=3, column=2, sticky=W)
主事件循环
m.mainloop()

Tkinter模块详解 | CSDN创作打卡

3.3 place 坐标布局管理器

place 坐标布局管理器允许指定组件的大小与位置。place 的优点是可以精确控制组件的位置,不足之处是改变窗口大小时,子组件不能随之灵活改变大小。调用子组件的方法 place,则该子组件在其父组件中采用 place 布局。

place(option;...)

place 方法提供的选项:

选项作用取值范围x,y绝对坐标从0开始的正整数relx,rely相对坐标取0.0~1.0之间的值width,height宽和高的绝对值正整数,单位 pxrelwidth,relheight宽和高的相对值取0.0~1.0之间的值anchor对齐方式,对应东南西北中及四个角n、s、w、e、center(默认值)、nw、sw、se、ne

例:使用 place 方法编写一个用户登录窗口,要求有文本标题、文本框及两个按钮。

导入 thinter 库
from tkinter import *
import tkinter.messagebox

创建顶层窗口对象
m = tkinter.Tk()
设置窗口标题
m.title("登录")
m["width"] = 200
m["height"] = 80
用户名标签,绝对坐标(1,1)
Label(m, text="用户名", width=6).place(x=1, y=1)
用户名文本框,绝对坐标(45,1)
Entry(m, width=20).place(x=45, y=1)
密码标签,绝对坐标(1,20)
Label(m, text="密码", width=6).place(x=1, y=20)
用户名文本框,绝对坐标(45,20)
Entry(m, show="*", width=20).place(x=45, y=20)
登录按钮,绝对坐标(40,40)
Button(m, text="登录", width=8).place(x=40, y=40)
取消按钮,绝对坐标(110,40)
Button(m, text="取消", width=8).place(x=110, y=40)
主事件循环
m.mainloop()

Tkinter模块详解 | CSDN创作打卡
  1. 事件处理

用户通过鼠标和键盘与图形用户界面交互时,会触发事件。Tkinter 事件采用放置于(<>)内的字符串表示,称为事件系列。

可选的 modifier 用于组合键定义,具体如下:

同时按下Ctrl、Shift、Alt和A四个键

按下A键

单击鼠标左键

双击鼠标左键

'''也可以使用短格式表示事件,""等同于";
"x"等同"""'''

4.1 事件绑定

调用组件对象实例方法 bind,可以为指定组件实例绑定事件。

例:编写一个程序,当使用鼠标左键单击容器时获得坐标。

导入 thinter 库
from tkinter import *
import tkinter.messagebox

创建顶层窗口对象
m = tkinter.Tk()

def callback(event):
    print(event.x, event.y)

frame = tkinter.Frame(m, width=180, height=150)
frame.bind("", callback)
frame.pack()

主事件循环
m.mainloop()

Tkinter模块详解 | CSDN创作打卡
  1. Tkinter 库的常用组件

组件名称作用Button按钮单击触发事件Canvas画布绘制图形或绘制特殊组件Checkbutton复选框多项选择Entry输入框接收单行文本输入Frame框架用于组件分组Label标签单行文本显示Listbox列表框显示文本列表Menu菜单创建菜单命令Menubutton菜单按钮组件显示菜单项Message消息多行文本标签,类似于 LabelRadiobutton单选按钮单项选择Scale滑块默认垂直方向,鼠标拖动改变数值形成可视化交互Scrollbar滑动条默认垂直方向,鼠标拖动改变数值,可与 Text、Listbox、Canvas 等组件配合形成可视化交互Text文本框接收或输出多行文本Toplevel新建窗体容器在顶层创建新窗体

Original: https://blog.csdn.net/m0_56501706/article/details/122849671
Author: Michael.py
Title: Tkinter模块详解 | CSDN创作打卡

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/694554/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球