【Python】Tkinter教程

article/2025/9/24 17:53:00

什么是Tkinter?

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。

使用

导入

import tkinter

注意:Python3.x 版本使用的库名为 tkinter,即首写字母 T 为小写。

创建一个GUI程序

  • 1、导入 Tkinter 模块
  • 2、创建控件
  • 3、指定这个控件的 master, 即这个控件属于哪一个
  • 4、告诉 GM(geometry manager) 有一个控件产生了。
#!/usr/bin/python3import tkinter
top = tkinter.Tk()
# 进入消息循环
top.mainloop()

窗口主体框架 

每一个 tkinter 应用的主体框架都可以包含下面这部分. 定义 window 窗口 和 window的一些属性, 然后书写窗口内容, 最后执行window.mainloop让窗口活起来.

import tkinter as tkwindow = tk.Tk()
window.title('my window')
window.geometry('500x500')
#注意:这里的乘是×不是*# 这里是窗口的内容window.mainloop()

 窗口内容

 Label & Button 标签和按钮

这次我们会建立一个用来描述的标签 tk.Label, 比如:

import tkinter as tk
#创建窗口
window=tk.Tk()
window.title('Mywindow')#窗口的标题
window.geometry('200x100')#窗口的大小
#定义一个lable
l = tk.Label(window, text='Hi! this is TK!',    # 标签的文字bg='green',     # 标签背景颜色font=('Arial', 12),     # 字体和字体大小width=15, height=2  # 标签长宽(以字符长度计算))
l.pack()    # 固定窗口位置window.mainloop()

关于Label的更多内容可以看这里https://www.runoob.com/python/python-tk-label.html

 我们也可以通过变量的形式控制标签的显示, 这时我们引入按钮 tk.Button 的概念, 没点一次按钮, 标签变化一次. 用一下内容替换上面的标签. 并把需要变化的文字存成变量 var:

 

var = tk.StringVar()    # 这时文字变量储存器
l = tk.Label(window, textvariable=var,   # 使用 textvariable 替换 text, 因为这个可以变化bg='green', font=('Arial', 12), width=15, height=2)
l.pack() 

接着我们来做 按钮 tk.Button:

b = tk.Button(window, text='hit me',      # 显示在按钮上的文字width=15, height=2, command=hit_me)     # 点击按钮式执行的命令
b.pack()    # 按钮位置

那么点击是的命令我们用 if else 语句来判断. 用 on_hit 来判断当前状态.

on_hit = False  # 默认初始状态为 False
def hit_me():global on_hitif on_hit == False:     # 从 False 状态变成 True 状态on_hit = Truevar.set('you hit me')   # 设置标签的文字为 'you hit me'else:       # 从 True 状态变成 False 状态on_hit = Falsevar.set('') # 设置 文字为空

完整代码:

import tkinter as tk
#创建窗口
window=tk.Tk()
window.title('Mywindow')#窗口的标题
window.geometry('200x100')#窗口的大小
#定义一个lable
var=tk.StringVar()#定义一个字符串变量
l = tk.Label(window, textvariable=var,    # 标签的文字bg='green',     # 标签背景颜色font=('Arial', 12),     # 字体和字体大小width=15, height=2  # 标签长宽)
l.pack()    # 固定窗口位置
#定义一个全局变量,来表明字符显示与不显示
on_hit=False#按钮的函数
def hit_me():global on_hit#声明全局变量if on_hit==False:on_hit=Truevar.set('You hit me!')else:on_hit=Falsevar.set('')
#按钮
b=tk.Button(window,text='点我',width=15,height=2,command=hit_me)#点击按钮执行一个名为“hit_me”的函数
b.pack()window.mainloop()

没有点击时:

Label & Button 标签和按钮

点击第一次:

Label & Button 标签和按钮

点击第二次:

Label & Button 标签和按钮

 

Entry & Text 输入, 文本框

窗口主体框架 

每一个tkinter应用的主体框架都包含以下几部分:

  • 主窗口: window,及主窗口的一些基本属性(标题、大小)
  • 让窗口活起来:window.mainloop()
import tkinter as tkwindow = tk.Tk()
window.title('my window')##窗口尺寸
window.geometry('200x200')##显示出来
window.mainloop()

窗口内容(窗口上的控件)

创建按钮分别触发两种情况

b1 = tk.Button(window,text="insert point",width=15,height=2,command=insert_point)
b1.pack()b2 = tk.Button(window,text="insert end",command=insert_end)
b2.pack()

创建输入框entry,用户输入任何内容都显示为*

e = tk.Entry(window,show='*')
e.pack()

创建一个文本框用于显示

t = tk.Text(window,height=2)
t.pack()

定义触发事件时的函数(注意:因为Python的执行顺序是从上往下,所以函数一定要放在按钮的上面)

def insert_point():var = e.get()t.insert('insert',var)def insert_end():var = e.get()t.insert('end',var)

完整代码:

import tkinter as tkwindow = tk.Tk()
window.title('my window')
##窗口尺寸
window.geometry('200x200')
#定义一个输入框entry
e=tk.Entry(window,show=None)#如果是输入密码,可以写show='*'
e.pack()
#定义按钮功能
def insert_point():var=e.get()t.insert('insert',var)
def insert_end():var=e.get()t.insert('end',var)#这里还可以定义字符串插入的具体位置,比如t.insert('1.1',var),表示插入到第一行第一列
#定义2个按钮 Button b1 = tk.Button(window,text="insert point",width=15,height=2,command=insert_point) b1.pack() b2 = tk.Button(window,text="insert end",command=insert_end) b2.pack() #定义一个文本框 Text t=tk.Text(window,height=2) t.pack() ##显示出来 window.mainloop()

窗口界面

测试一下 

第一次:在entry中输入tkinter,在text中输入0000并将光标定位在中间位置,点击insert point

Entry & Text 输入, 文本框

第二次:点击insert end

Entry & Text 输入, 文本框

 Listbox 列表部件

创建主窗口

import tkinter as tkwindow = tk.Tk()
window.title('my window')
##窗口尺寸
window.geometry('200x200')##显示出来
window.mainloop()

创建一个label用于显示 

var1 = tk.StringVar()    #创建变量
l =tk.Label(window,bg='yellow',width=4,textvariable=var1)
l.pack()

 

 

 

创建一个方法用于按钮的点击事件

def print_selection():value = lb.get(lb.curselection())   #获取当前选中的文本var1.set(value)     #为label设置值

创建一个按钮

b1 = tk.Button(window, text='print selection', width=15,height=2, command=print_selection)
b1.pack()

 

 

 

创建一个Listbox和变量var2,并将var2的值赋给Listbox

var2 = tk.StringVar()
var2.set((11,22,33,44)) #为变量设置值#创建Listboxlb = tk.Listbox(window, listvariable=var2)  #将var2的值赋给Listbox#创建一个list并将值循环添加到Listbox控件中
list_items = [1,2,3,4]
for item in list_items:lb.insert('end', item)  #从最后一个位置开始加入值
lb.insert(1, 'first')       #在第一个位置加入'first'字符
lb.insert(2, 'second')      #在第二个位置加入'second'字符
lb.delete(2)                #删除第二个位置的字符
lb.pack()

完整代码:

 

import tkinter as tkwindow = tk.Tk()
window.title('my window')
##窗口尺寸
window.geometry('200x200')
#创建一个lable
var1 = tk.StringVar()    #创建变量
l =tk.Label(window,bg='yellow',width=4,textvariable=var1)
l.pack()
#按钮事件
def print_selection():value = lb.get(lb.curselection())   #获取当前选中的文本var1.set(value)     #为label设置值
#创建一个按钮
b1 = tk.Button(window, text='print selection', width=15,height=2, command=print_selection)
b1.pack()
#创建一个Listbox和变量var2,并将var2的值赋给Listbox
var2 = tk.StringVar()
var2.set((11,22,33,44)) #为变量设置值#创建Listboxlb = tk.Listbox(window, listvariable=var2)  #将var2的值赋给Listbox#创建一个list并将值循环添加到Listbox控件中
list_items = [1,2,3,4]#定义列表
for item in list_items:lb.insert('end', item)  #从最后一个位置开始加入值
lb.insert(1, 'first')       #在第一个位置加入'first'字符
lb.insert(2, 'second')      #在第二个位置加入'second'字符
lb.delete(2)                #删除第二个位置的字符
lb.pack()##显示出来
window.mainloop()

演示

Radiobutton 选择按钮

这一次的效果将会像下面的图片一样.

Radiobutton 选择按钮

如果选择了某个选项, 效果就会如下.

Radiobutton 选择按钮

radiobutton 部件

首先我们需要定义一个 var 用来将 radiobutton 的值和 Label 的值联系在一起. 然后创建一个radiobutton部分:

var = tk.StringVar()
l = tk.Label(window, bg='yellow', width=20, text='empty')
l.pack()r1 = tk.Radiobutton(window, text='Option A',variable=var, value='A',command=print_selection)
r1.pack()

其中variable=varvalue='A'的意思就是,当我们鼠标选中了其中一个选项,把value的值A放到变量var中,然后赋值给variable

触发功能

我们将定义一个功能, 用来对选择的 radiobutton 进行操作. print_selection 功能就是选择了某个 radiobutton 后我们会在屏幕上打印的选项.

def print_selection():l.config(text='you have selected ' + var.get())

当触发这个函数功能时,我们的 label 中就会显示 text 所赋值的字符串即 ‘you have selected’, 后面则是我们所选中的选项 var.get()就是获取到变量 var 的值, 举个例子就是我们一开始所做的将选项 “option A” 选中时的值以 “A” 放入 var 中, 所以获取的也就是A 即如果我们这时候选中 “option A” 选项,label显示的值则是 “you have selected A”.

完整代码:

import tkinter as tkwindow = tk.Tk()
window.title('my window')
##窗口尺寸
window.geometry('200x200')
#创建一个lable
var= tk.StringVar()    #创建变量
l =tk.Label(window,bg='yellow',width=20,height=2,text='empty')
l.pack()
#实现将选择的选项显示在lable
def print_selection():l.config(text='you have selected'+var.get())#创建几个Radiobutton
r1 = tk.Radiobutton(window, text='Option A',variable=var, value='A',command=print_selection)
r1.pack()r2 = tk.Radiobutton(window, text='Option B',variable=var, value='B',command=print_selection)
r2.pack()r3 = tk.Radiobutton(window, text='Option C',variable=var, value='C',command=print_selection)
r3.pack()##显示出来
window.mainloop()

演示:

 


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

相关文章

Tkinter保姆级教程(下)

继上次肝了几天的Tkinter保姆级教程(上),接下来继续肝教程下,冲冲冲。 目录 Scale控件 Canvas画布控件 Menu菜单控件 Scrollbar滚动条控件 Event事件处理 布局管理器(pack,grid,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&…

windows下OpenFace安装及测试

想使用openface来实现以下视线估计的内容&#xff0c;但是搜了好多都没有具体的使用方案&#xff0c;于是经历了半周&#xff0c;仔细阅读官方文档和参考了一些大佬的经验&#xff0c;终于运行成功了&#xff0c;在此记录一下&#xff0c;嘻嘻 安装 openceface安装官方文档&…

Ubuntu 14.04下openface的环境搭建

如需转载请标明出处&#xff1a;http://blog.csdn.net/itas109 QQ技术交流群&#xff1a;129518033 一、什么是openface&#xff1f; openface是一个基于深度神经网络的开源人脸识别系统。该系统基于谷歌的文章FaceNet: A Unified Embedding for Face Recognition and Clust…

Windows 11 下 OpenFace 2.2.0 的安装

写在前面 最近需要做关于面部的东西&#xff0c;所以需要使用到OpenFace这个工具&#xff0c;本文仅用来记录本人安装过程以供后续复现&#xff0c;如果可以帮助到读者也是非常荣幸。 安装过程 不编译直接使用 这种方法可以直接从官方下载下来编译好的exe以及gui进行使用&a…

Openface人脸识别的原理与过程

Openface人脸识别的原理与过程&#xff1a; https://zhuanlan.zhihu.com/p/24567586 原理可参考如下论文&#xff1a; 《OpenFace: A general-purpose face recognition library with mobile applications》 第一步&#xff1a;找出所有的面孔 我们流水线的第一步是人脸检测。…

openface在pycharm上的安装

1、下载openface相关文件 链接&#xff1a;下载openface:GitHub - cmusatyalab/openface: Face recognition with deep neural networks. 下载后得到一个openface-master的文件夹 2、输入cmd&#xff0c;进入命令提示符&#xff0c;找到自己保存的openface-master文件夹路径。 …

OpenFace使用OpenFace进行人脸识别

1.OpenFace简介 http://cmusatyalab.github.io/openface/ 安装就按照官方教程来就好了 装完各种依赖之后运行一下命令 https://github.com/cmusatyalab/openface.git --recursive cd openface sudo python setup.py install sh modles/get-models.sh 2.素材准备 准备两…

【OpenFace】

OpenFace&#xff1a; http://cmusatyalab.github.io/openface/ 一、什么是Openface&#xff1f; Openface是一个基于深度神经网络的开源人脸识别系统。该系统基于谷歌的文章FaceNet: A Unified Embedding for Face Recognition and Clustering。Openface是卡内基梅隆大学的 B…

OpenFace

OpenFace是一个包含了landmark&#xff0c;head pose&#xff0c;Actionunions&#xff0c;eye gaze等功能&#xff0c;并包含训练和检测所有源码的开源人脸框架&#xff0c;论文为&#xff0c;OpenFace: an open source facial behavior analysis toolkit OpenFace所用到的库包…

win10下openface快速安装与使用

win10下openface快速安装与使用 情况说明环境下载openface下载模型openface的简单使用 情况说明 我发现openface的安装方法五花八门&#xff0c;大多都比较复杂&#xff0c;而openface分很多版本&#xff0c;很多安装教程混在一起&#xff0c;导致我自己安装时下载下混了。 本…

Windows系统下的Openface安装及使用--亲测有效

一、配置openface所需环境 openface主要依赖于opencv和dlib等工具包&#xff0c;工具包安装可winr进入用户终端下载安装&#xff08;需要先下载python&#xff09;&#xff0c;或者下载ananconda&#xff0c;创建anaconda虚拟环境安装&#xff1a; pip install opencv-python…

OpenFace简介

推荐 如下博文 https://blog.csdn.net/qq_14845119/article/details/53994607 OpenFace是一个包含了landmark&#xff0c;head pose&#xff0c;Actionunions&#xff0c;eye gaze等功能&#xff0c;并包含训练和检测所有源码的开源人脸框架&#xff0c;论文为&#xff0c;Ope…