Python GUI之tkinter库教程

article/2025/9/24 15:51:11

tkinter的简介

tkinter 是 Python 的标准 GUI 库。它基于 Tk 工具包,该工具包最初是为工具命令语言(Tool Command Language,Tcl)设计的。Tk 普及后,被移植到很多其他的脚本语言中,包括 Perl,Ruby 和 Python。结合 Tk 的可移植性与灵活性,以及与系统语言功能集成的脚本语言的简洁性,可以快速开发 GUI 应用程序

对于gui编程我是这样理解的, 我们小时候都玩过积木,只要发挥创意,相同的积木可以堆出各种造型。tkinter的组件也可以看做一个个积木,形状或许不同,其本质都是一样的,就是一个积木,不管它长什么样子,它始终就是积木!我们主要学习他如何使用,如何放置,至于积木如何制作出来的不用管。

GUI编程步骤

创建gui程序的步骤
创建一个 GUI 应用程序需要以下 5 个主要步骤。

  1. 导入 tkinter 模块(import tkinter)
  2. 创建一个顶层窗口对象(调用 Tk()函数),用于容纳整个 GUI 应用。
  3. 在顶层窗口对象上构建所有的 GUI 控件(按钮、标签、文本框、消息框)
  4. 通过底层应用代码将这些 GUI 控件连接起来并确定控件的放置位置
  5. 进入主事件循环(调用 mainloop()函数)
# 第一步 导入包
from tkinter import * #导入包
from tkinter import messagebox # 弹出消息框# 功能:应用按钮控件和弹出对话框控件
# 作者:摘星# 第二步  创建顶层窗口对象,并设置相关数据
root =Tk()   #创建一个主窗口,所有的控件都是放在这里面的
root.title("我的第一个gui窗体")  # 标题
root.geometry("600x600+200+100")   #控制主窗口的大小和位置(宽x高+距左边位置+据上边位置)# 第三步  创建相关控件
btn01=Button(root)   #创建一个(对象)按钮控件,将对象放进主窗口中
btn01["text"]="开始按钮"  #给这个按钮取个名字# 第四步  确定控件放置位置,并设置单击事件 
btn01.pack()   # 这东西负责布局,就是控件放在主窗口中的位置,如果没有会看不见def hy(e):#这个必须有参数的'''单击按钮会发生的事情'''messagebox.showinfo("欢迎","欢迎你进入gui的世界")btn01.bind("<Button-1>", hy) #绑定单击事件第五步,开始事件循环
root.mainloop() #可以理解为开始方法

tkinter常用控件

tkinter常用模块说明

在这里插入图片描述

常用控件的介绍

Tkinter支持16个核心的窗口部件,这个16个核心窗口部件类简要描述如下:

  • Button:一个简单的按钮,用来执行一个命令或别的操作
  • Canvas:组织图形。这个部件可以用来绘制图表和图,创建图形编辑器,实现定制窗口部件。
  • Checkbutton:代表一个变量,它有两个不同的值。点击这个按钮将会在这两个值间切换。
  • Entry:文本输入域。
  • Frame:一个容器窗口部件。帧可以有边框和背景,当创建一个应用程序或dialog(对话)版面时,帧被用来组织其它的窗口部件。
  • Label:显示一个文本或图象。
  • Listbox:显示供选方案的一个列表。listbox能够被配置来得到radiobutton或checklist的行为。
  • Menu:菜单条。用来实现下拉和弹出式菜单。
  • Menubutton:菜单按钮。用来实现下拉式菜单。
  • Message:显示一文本。类似label窗口部件,但是能够自动地调整文本到给定的宽度或比率
  • Radiobutton:代表一个变量,它可以有多个值中的一个。点击它将为这个变量设置值,并且清除与这同一变量相关的其它radiobutton。
  • Scale:允许你通过滑块来设置一数字值。
  • Scrollbar:为配合使用canvas, entry, listbox, and text窗口部件的标准滚动条。
  • Text:格式化文本显示。允许你用不同的样式和属性来显示和编辑文本。同时支持内嵌图象和窗口。
  • Toplevel:一个容器窗口部件,作为一个单独的、最上面的窗口显示。
  • messageBox:消息框,用于显示你应用程序的消息框。(Python2中为tkMessagebox)
常用控件使用案例
1、创建主窗口及Label部件(标签)创建使用
# 功能: 标签按钮的使用
# 作者:摘星
from tkinter import *root=Tk() # 创建一个主窗口
root.title("标签学习")
root.geometry('500x300')lan=Label(root,text="你好世界",bg="red",font="华文彩云",width="12",height="2",)
# 说明: bg为背景,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
lan.pack() # 设置布局,后面会详细讲root.mainloop(
2、Entry控件的使用

简单说明:

Entry是tkinter类中提供的的一个单行文本输入域,用来输入显示一行文本,收集键盘输入(类似 HTML 中的 text)。

from tkinter import *
# 功能:学习使用Entry控件
#作者: 摘星# 创建主窗口
root=Tk()
root.title("登录")
root.geometry("500x500")lab1=Label(root,text="用户名:")  #标签lab2=Label(root,text="密码:")   #标签text1=Entry(root,font=('华文彩云',14)) # 明文
text2=Entry(root,font=('华文彩云',14),show='*') # 密文# 下面是布局,先不要管什么后面会说
lab1.place(x=120,y=150)
lab2.place(x=120,y=175)
text1.place(x=150,y=150)
text2.place(x=150,y=175)# 得到文本框中的内容
name=text1.get()
woss=text2.get()print("用户名是:{0},密码是:{1}".format(name,woss)) #这里留下了一个坑,后面会填#开启事件循环
root.mainloop()

3、Text控件的使用

简单说明:  
  Text是tkinter类中提供的的一个多行文本区域,显示多行文本,可用来收集(或显示)用户输入的文字(类似 HTML 中的 textarea),格式化文本显示,允许你用不同的样式和属性来显示和编辑文本,同时支持内嵌图象和窗口。

from tkinter import * # 使用Tkinter前需要先导入# 第1步,实例化object,建立窗口window
root = Tk()# 第2步,给窗口的可视化起名字
root.title('多行文本框')# 第3步,设定窗口的大小(*)
root.geometry('500x300')  # 这里的乘是小x# 第4步,创建并放置一个多行文本框text用以显示,指定height=3为文本框是三个字符高度
t=Text(root,height=3)
t.pack()# 第5步,主窗口循环显示
root.mainloop()
4、 Menu窗口部件

简单说明:

Menu:菜单条,用来实现下拉和弹出式菜单,点下菜单后弹出的一个选项列表,用户可以从中选择

from tkinter import *
from tkinter import messagebox
# 创建窗口root=Tk()
root.title("记事本")
root.geometry('500x300')#建立事件方法def bj():'''编辑方法'''messagebox.showinfo(title='编辑', message='点了编辑菜单')def bz():messagebox.showinfo(title='帮助',message='帮助功能正在开发')def ck():'''查看方法'''c=t.get(1.0,END) # 获取文本域输入messagebox.showinfo(title="查看",message=c)# 创建一个菜单栏,这就是个容器哈,里面专门放菜单项的
menubar=Menu(root)#创建菜单项
M1=Menu(menubar) # 项1
M2=Menu(menubar) # 项2
M3=Menu(menubar) # 项3# 給上面创建的菜单系命名并添加到菜单项中
menubar.add_cascade(label="文件",menu=M1)# 加入菜单,与上不同哦
menubar.add_command(label="编辑",command=bj)
menubar.add_command(label="帮助",command=bz)#在文件菜单中加入一些小菜单,打开,保存,新建等等
M1.add_command(label='查看',command=ck)
M1.add_command(label='打开')
M1.add_command(label="保存")# 完了之后还要显示菜单栏
root.config(menu=menubar)# 创建一个多行文本框
t=Text(root,height=3)
t.pack()
root.mainloop()

tkinter布局管理器

tkinter 有三种布局方式

1、grid布局(方格布局)

以下的代码就是创建一个三行三列的表格,其实 grid 就是用表格的形式定位的。这里的参数 row 为行,colum 为列,padx 就是单元格左右间距,pady 就是单元格上下间距,ipadx是单元格内部元素与单元格的左右间距,ipady是单元格内部元素与单元格的上下间距

 
import tkinter as tk  # 使用Tkinter前需要先导入# 摘星# 测试tkinter的grid布局# 第1步,实例化object,建立窗口window
window = tk.Tk()# 第2步,给窗口的可视化起名字
window.title('My Window')# 第3步,设定窗口的大小(*)
window.geometry('500x300')  # 这里的乘是小x# 第4步,grid 放置方法
for i in range(3):for j in range(3):tk.Label(window, text=1).grid(row=i, column=j, padx=10, pady=10, ipadx=10, ipady=10)# 第5步,主窗口循环显示
window.mainloop()
2、Pack布局

我们上面用的pack(), 他会按照上下左右的方式排列.例如


import tkinter as tk  # 使用Tkinter前需要先导入# 作者:摘星
# 功能: 测试pack布局# 第1步,实例化object,建立窗口window
window = tk.Tk()# 第2步,给窗口的可视化起名字
window.title('My Window')# 第3步,设定窗口的大小(*)
window.geometry('500x300')  # 这里的乘是小x# 第4步,pack 放置方法
tk.Label(window, text='我是上', fg='red').pack(side='top')    # 上
tk.Label(window, text='我是下', fg='red').pack(side='bottom') # 下
tk.Label(window, text='我是左', fg='red').pack(side='left')   # 左
tk.Label(window, text='我是右', fg='red').pack(side='right')  # 右# 第5步,主窗口循环显示
window.mainloop()
3、Place布局

再接下来我们来看place(), 这个比较容易理解,就是给精确的坐标来定位,如此处给的(50, 100),就是将这个部件放在坐标为(x=50, y=100)的这个位置,


import tkinter as tk  # 使用Tkinter前需要先导入# 测试place布局
# 摘星
# 第1步,实例化object,建立窗口window
window = tk.Tk()# 第2步,给窗口的可视化起名字
window.title('My Window')# 第3步,设定窗口的大小(*)
window.geometry('500x300')  # 这里的乘是小x# 第4步,place 放置方法(精准的放置到指定坐标点的位置上)
tk.Label(window, text='软件二班', font=('华文彩云', 20), ).place(x=50, y=100, anchor='nw')# 第5步,主窗口循环显示
window.m

tkinter综合案例——记事本

from tkinter import *
from tkinter import messagebox
from tkinter.colorchooser import *
from tkinter.filedialog import *
# 创建窗口filename=''root=Tk()
root.title("记事本")
root.geometry('500x300')#建立事件方法
def xj():'''新建方法'''global filename # 声明全局filename=asksaveasfilename(title="另存为",initialfile="未命名.txt",filetypes=[("文本对象","*.txt")],defaultextension=".txt")bc()def dk():'''打开文件方法'''global filename # 声明全局t.delete("1.0","end")with askopenfile(title="打开文本文件") as f:# askopenfile是内部提供的方法t.insert(INSERT,f.read())filename=f.namedef bc():'''保存方法'''with open(filename,'w')as f:c=t.get(1.0,END)f.write(c)def bj():'''编辑方法'''messagebox.showinfo(title='编辑', message='点了编辑菜单')def bz():'''帮助方法'''messagebox.showinfo(title='帮助',message='帮助功能正在开发')# 创建一个菜单栏,这就是个容器哈,里面专门放菜单项的
menubar=Menu(root)#创建菜单项
M1=Menu(menubar) # 项1
M2=Menu(menubar) # 项2
M3=Menu(menubar) # 项3# 給上面创建的菜单系命名并添加到菜单项中
menubar.add_cascade(label="文件",menu=M1)# 加入菜单,与上不同哦
menubar.add_command(label="编辑",command=bj)
menubar.add_command(label="帮助",command=bz)#在文件菜单中加入一些小菜单,打开,保存,新建等等
M1.add_command(label='新建',command=xj)
M1.add_command(label='打开',command=dk)
M1.add_command(label="保存",command=bc)# 完了之后还要显示菜单栏
root.config(menu=menubar)# 创建一个多行文本框
t=Text(root,height=10)
t.pack()root.mainloop()

http://chatgpt.dhexx.cn/article/oAEVT2b5.shtml

相关文章

Tkinter使用

一、前言 这篇文章是去年8月份学习python时顺便在博客园写的一篇笔记&#xff0c;现在搬运到hexo博客上来&#xff0c;主要针对新手。由于本篇文章较长&#xff0c;所以下面给出内容目录方便跳转阅读&#xff0c;当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅。 首…

Tkinter保姆级教程(上)

目录 什么是GUI Tkinter用法详解 第一个Tkinter程序 常用控件和属性 主窗口 Label标签控件 Button按钮控件 Entry输入控件 基本属性 Text 文本控件 列表框(ListBox)和组合框(Combobox) 单选框(Radiobutton)和多选框按钮(Checkbutton) 什么是GUI 图形用户界面&#xf…

《tkinter实用教程一》Linux环境下安装tkinter

更多《Tkinter 实用教程》系列文章 在 Linux 环境下安装 tkinter tkinter 是 Python 编程语言中描述用于构建图形用户界面 (GUI) 的控件集&#xff0c;因此&#xff0c;学习 tkinter 安装之前&#xff0c;需要首先确定您已经正确安装了 Python。 您可以使用如下命令&#xf…

Tkinter简介

Tkinter简介 (也叫 Tk 接口)是 Tk 图形用户界面工具包标准 的 Python 接口。 Tk 是一个轻量级的跨平台图形用户界面 (GUI)开发工具。Tk 和 Tkinter 可以运行在大多数 的 Unix 平台、Windows、和 Macintosh 系统。 由于是Python自带的标准库&#xff0c;我们想要使用它的时候…

tkinter库详解

①导入标准库&#xff08;tkinter为python标准库无需安装&#xff09; from tkinter import * ②窗口的创建和设置 窗口的创建和设置方法注释rootTk()生成主窗口root.geometry(‘250x250’)改变窗体大小&#xff08;‘宽x高’&#xff09;&#xff0c;注意是x不是*root.geome…

python tkinter详解

PYTHON TKINTER Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的平台下使用,同样可以应用在 Windows 和 Mac系统里。 与tkinter齐名的还有wxpython&#xff0c;jython&#xff0c;pyqt&#xff08;pyqt5&#xff09;。其中&#x…

python-tkinter 官方文档

python-tkinter官方文档 防盗声明&#xff1a;在其他网站看到的都是盗版的 本文源地址唯一地址 https://blog.csdn.net/weixin_44331765/article/details/120923775 搜了好多都收费&#xff0c;用官网的文档赚钱也是够了&#xff0c;分享一个给大家&#xff0c;互相学习。 1…

python --Tkinter详解

简介 tkinter tkinter(Tk interface)是Python的标准GUl库&#xff0c;支持跨平台的GUl程序开发。tkinter适合小型的GUl程序编写&#xff0c;也特别适合初学者学习GUl编程。 wxPython wxPython是比较流行的GUI库&#xff0c;适合大型应用程序开发&#xff0c;功能强于tkinter,整…

【Python】GUI编程(Tkinter)教程

什么是Tkinter&#xff1f; Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。 由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinte…

Tkinter教程(每天半小时,3天彻底掌握Tkinter)day1

Tkinter教程(每天半小时&#xff0c;3天彻底掌握Tkinter)day1 目录 Tkinter教程(每天半小时&#xff0c;彻底掌握Tkinter)day1 教程环境 Tkinter概述 GUI是什么 Tkinter是什么 Tkinter的弊端 第一个Tkinter程序 插入ico 关闭python窗体 python窗体居中设置 护眼色_颜…

【Python】Tkinter教程

什么是Tkinter&#xff1f; Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。 由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinte…

Tkinter保姆级教程(下)

继上次肝了几天的Tkinter保姆级教程&#xff08;上&#xff09;&#xff0c;接下来继续肝教程下&#xff0c;冲冲冲。 目录 Scale控件 Canvas画布控件 Menu菜单控件 Scrollbar滚动条控件 Event事件处理 布局管理器&#xff08;pack&#xff0c;grid&#xff0c;place&am…

Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用

>>>【上节回顾&#xff1a;Python Tkinter 模块简要介绍】<<< Python Tkinter教程&#xff08;一&#xff09; 这篇博客将详细地介绍如何使用tkinter模块进行简单的GUI编程&#xff08;包括基本步骤、窗口基本属性&#xff09;&#xff0c;同时还会解释如何使…

Tkinter教程

文章目录 Tkinter教程&#xff08;非常详细&#xff09;教程特点阅读条件 GUI是什么GUI发展史GUI应用领域GUI的优势GUI开发工具 Tkinter是什么第一个Tkinter程序1) 主窗口设置2) 添加文本3) 添加按钮4) 独立运行tkinter程序 Tkinter常用控件和属性控件类型控件基本属性 Tkinter…

超全!Tkinter 使用教程!4000字!

人生苦短&#xff0c;快学Python&#xff01; 本期案例是带着大家制作一个属于自己的GUI图形化界面—>用于设计签名的哦(效果如下图)&#xff0c;是不是感觉很好玩&#xff0c;是不是很想学习呢&#xff1f;限于篇幅&#xff0c;今天我们首先详细讲述一下Tkinter的使用方法。…

Openface (三) EYE GAZE 数据集

三维视线估计 1、Eyediap 数据集 &#xff1a;利用深度摄像头标注 RGB 视频中的眼睛中心点位置和乒乓球位置。把这两个位置映射到深度摄像头记录的三维点云中&#xff0c;从而得到对应的三维位置坐标。这两个三维位置坐标相减后即得到视线方向。 https://www.idiap.ch/en/data…

OpenFaceswap 入门教程(1):软件安装篇

众多换脸软件中&#xff0c;DeepFaceLab其实是安装和使用最方便&#xff0c;更新最快的&#xff0c;但是由于其没有可是化界面&#xff0c;对于很新手来说&#xff0c;可能入门还是有点难度。那么今天就来介绍一款操作极其直观和简单的换脸软件OpenFaceSwap。这款软件的安装和使…

「图像处理」使用Python+Openface实现人脸识别与关键点(landmarks)检测

1、如何在Python上安装OpenFace 下载安装 1、首先需要下载OpenFace源码&#xff1a; &#xff08;Anaconda、Git等自行提前安装&#xff09; git clone https://github.com/cmusatyalab/openface.git 2、接着进入openface路径 cd openface 3、执行&#xff1a; pip ins…

openface的导出数据说明

openface的导出数据说明&#xff0c;因为自己使用的时候一个一个翻译起来比较麻烦&#xff0c;就自己弄了一个。 原文GitHub地址&#xff1a;https://github.com/TadasBaltrusaitis/OpenFace/wiki/Command-line-arguments ZD到最后的列&#xff1a;是面部动作编码系统 &#…

【TensorFlow】人脸识别OpenFace、Face-recognition、Insightface和FaceNet源码运行

比较人脸识别OpenFace、Face-recognition、Insightface&#xff1a; FaceNet源码运行 https://github.com/davidsandberg/facenet 1、使用Anaconda安装TensorFlow&#xff1b; 2、更新scipy库&#xff1b; 3、添加os.environ["KMP_DUPLICATE_LIB_OK"]"TRUE&…