python tkinter详解

article/2025/9/24 16:15:16

PYTHON TKINTER

Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的平台下使用,同样可以应用在 Windows 和 Mac系统里。

与tkinter齐名的还有wxpython,jython,pyqt(pyqt5)。其中,公认的对python新手而言的好用程度:jython<tkinter<wxpython<pyqt。(仅代表博主所看到的意见,没有反驳的必要

Tkinter编程

一个标准的用tkinter编写的GUI程序应当有以下几点:

1. tkinter模块的导入

2. 创建一个tkinter控件

3. 对于这个控件,指定master, 即这个控件属于哪一个

4. 告诉 GM(geometry manager) 有一个控件产生了

注:py3和py2的tkinter模块的导入存在差异(根据自己的python版本决定用什么,因为博主本人用的是py3,所以下面的代码都会是py3形式)

#python3
import tkinter#python2
import Tkinter

tkinter模块并不需要额外的导入,python在安装的时候就有了tkinter了,所以不要去pip install tkinter了。

窗口框架

tkinter的每个程序都需要一个窗口的框架,其由导入+指定master+消息循环组成

import tkinter
root = tkinter.Tk()#通常习惯将这个变量名设置为root或者window
# 进入消息循环
root.mainloop()

Tkinter 标准属性

标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。

属性描述
Dimension控件大小
Color控件颜色
Font控件字体
Anchor锚点
Relief控件样式
Bitmap位图
Cursor光标

根据博主个人经历来说,Dimension, color, font, anchor 和 cursor是比较常用的控件,想要做到对于一个简单的GUI程序得心应手,这五个属性是一定要熟练的。(除此之外command也很重要)

Tkinter组件

Tkinter的提供各种控件,如按钮,标签和文本框,可以在一个GUI应用程序中使用。这些控件通常被称为控件或者部件。

目前据博主所知,有15种比较常见的Tkinter的部件。博主提出这些部件以及一个简短的介绍,在下面的表:

控件名称描述
Button按钮控件;在程序中显示按钮。
Canvas画布控件;显示图形元素如线条或文本
Checkbutton多选框控件;用于在程序中提供多项选择框
Entry输入控件;用于显示简单的文本内容
Frame框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label标签控件;可以显示文本和位图
Listbox列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton菜单按钮控件,用于显示菜单项。
Menu菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message消息控件;用来显示多行文本,与label比较类似
Radiobutton单选按钮控件;显示一个单选的按钮状态
Scale范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text文本控件;用于显示多行文本
Toplevel容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox输入控件;与Entry类似,但是可以指定输入范围值
PanedWindowPanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFramelabelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox

用于显示你应用程序的消息框 

其中,最常用的有Button,Canvas,Checkbutton,Entry,Frame,Label。

Button控件

Button控件用于在 GUI程序中添加按钮,按钮上可以放上文本或图像,按钮可用于监听用户行为。可以与一个 函数关联,当按钮被按下时,会自动调用该函数。

语法:

Button(master, option=value, ... )
  • master: 按钮的父容器。

  • options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。

 

实例:

import tkinter as tk #导入模块root = tk.Tk() 
root.title("python萌新花花")
root.geometry("114x514") #欸嘿b = 0def addOne(): #一个方法,每次按button就给b+1global bb += 1print(b)a = tk.Button(root, text = "看这里", command = addOne).pack() #button,这里面的command就是调用前面的addOne方法root.mainloop() #不能少的东西

 效果:

Canvas控件

Python Tkinter 画布(Canvas)组件和 html5 中的画布一样,都是用来绘图的。可以将图形,文本,小部件或框架放置在画布上。

语法:

Canvas(master, option=value, ... )
  • master: 按钮的父容器。
  • options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。

 canvas 支持的一些特殊的标准选项:

#arc:创建扇形(不知道为啥,但是基本每个有画图功能的库都有扇形)
places = 10, 50, 240, 210
arc = canvas.create_arc(places, start=0, extent=150, fill="blue")#image:创建图像
name = PhotoImage(file = "sunshine.gif")
image = canvas.create_image(50, 50, anchor=NE, image=name)#line:创建线条
line = canvas.create_line(x0, y0, x1, y1, ..., xn, yn, options)#oval: 创建一个圆(或许可以是个椭圆)
oval = canvas.create_oval(x0, y0, x1, y1, options)#polygon:创建一个多边形(至少有三个顶点)poly = canvas.create_polygon(x0, y0, x1, y1,...xn, yn, options)

实例:

import tkinter as tk #创建一个矩形,指定画布的颜色为白色root = Tk()cv = Canvas(root,bg = 'red') #创建一个Canvas,设置其背景色为红色
cv.create_rectangle(10,10,110,110) # 创建一个矩形,坐标为(10,10,110,110)
cv.pack()root.mainloop()# 为明显起见,将背景色设置为红色,用以区别 root

效果:

 

Checkbutton控件

Python Tkinter 复选框用来选取需要的选项,它前面有个小正方形的方块,如果选中则有一个对号,也可以再次点击以取消该对号来取消选中。 

语法:

Checkbutton(master, option=value, ... )
  • master: 按钮的父容器。

  • options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。

实例:

import tkinter as tkroot = tk.Tk()
root.title("python萌新花花")var1 = tk.IntVar() #定义一个整型变量,可以被放进控件中,可以在程序中更改值
var2 = tk.IntVar()
c1 = tk.Checkbutton(root, text = "花花最棒了", variable = var1,onvalue = 1, offvalue = 0, height=5,width = 20)
c2 = tk.Checkbutton(root, text = "花花最厉害", variable = var2,onvalue = 1, offvalue = 0, height=5,width = 20)
c1.pack()
c2.pack()
root.mainloop()

 效果:

Entry控件

 Python Tkinter 文本框用来让用户 输入 一行 文本字符串。(一般搭配StringVar而不是前面的IntVar)

但是如果需要输入多行文本,可以使用Text组件;如果需要显示一行或多行文本且不允许用户修改,可以使用Label组件。

语法:

Entry( master, option, ... )
  • master: 按钮的父容器。

  • options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。

实例:

import tkinter as tkroot = tk.Tk()
root.title("python萌新花花")L1 = tk.Label(root, text="看过来")
L1.pack(side = tk.LEFT)
E1 = tk.Entry(root, bd =5)
E1.pack(side = tk.RIGHT)root.mainloop()

 效果:

Label控件 (最最最最常用)

Python Tkinter 标签控件(Label)指定的窗口中显示的文本和图像。

  • 标签控件(Label)指定的窗口中显示的文本和图像。

  • 你如果需要显示一行或多行文本且不允许用户修改,你可以使用Label控件。

语法:

Label ( master, option, ... )
  • master: 框架的父容器。

  • options: 可选项,即该标签的可设置的属性。这些选项可以用键-值的形式设置,并以逗号分隔。

 实例:

import tkinter as tkroot = tk.Tk()
root.title("python萌新花花")L1 = tk.Label(root, text="花花最可爱啦")
L1.pack()root.mainloop()

效果:

Tkinter 练习:

制作一个GUI程序,可以让使用者输入账号和密码。密码以“ * ”的 形式显示。在使用者点下确定后,程序会和提前存在txt中的密码和账号匹配。如果不存在该账号或者密码错误,提示并且询问是否需要创建新账户。如果是,将新的账号和密码存在text中。

代码:

import tkinter as tk
import tkinter.messageboxlan = "english"
getData = []def signUp(usrName, usrPwd):with open('data.txt','a') as usrFile:usrFile.writelines("{}\n{}\n".format(usrName, usrPwd))def compare():name = var_usr_name.get()pwd = var_usr_pwd.get()usrName, usrPwd = name,pwdgetData = removeN()g = 0while(g<(len(getData)-1)):if usrName == getData[g] and g%2 == 0 and usrPwd == getData[g+1]:tk.messagebox.showinfo(title='login', message='Welcome, {}. You have successfully logged in.'.format(usrName))breakg = g + 1if g == len(getData)-1:tk.messagebox.showwarning(title = "error",message = "The user name and password are incorrect.")def removeN():asd = " "c = ""bd = []de = 0fg = "\n"with open('data.txt','r') as usrFile:asd = usrFile.readlines()for j in range(len(asd)):er = asd[j]pos = er.index(fg)cex = er[0:pos]bd.append(cex)de = 0cex = ""return bddef language():global lananswer = Falseif lan == "english":answer = tk.messagebox.askquestion(title='language changing', message='Do you want to switch to Spanish?')if answer == "yes":lan = "spanish"d_name.set("elija el lenguaje")e_name.set("el nombre")f_name.set("cifra")else:passelif lan == "spanish":answer = tk.messagebox.askquestion(title='language changing', message='Do you want to switch to English?')if answer == "yes":lan = "english"d_name.set("select language")e_name.set("user name")f_name.set("password")else:passwindow = tk.Tk()
window.title('Fake PowerSchool Help Students!')
window.geometry('500x500')
z = tk.Label(window,anchor = 'w',bg='white',justify = 'center', width=500, height=500)
z.place(x = 0, y = 0)
a = tk.Label(window,anchor = 'w',text="PowerSchool SIS",fg = 'white', bg='darkblue', font=('TimesNewRoman', 30),justify = 'center', width=20, height=1)
a.place(x = 50, y = 100)b = tk.Label(window,anchor='nw',text="Student and Parent Sign In",fg='black',bg='white',font=('TimesNewRoman',12),justify='center',width=50,height=20)
b.place(x = 50, y = 150)c = tk.Button(window, text='language', width=15,height=2, command=language)
c.place(x = 270,y = 200)d_name = tk.StringVar()
d_name.set("select language")
d = tk.Label(window,anchor='nw',textvariable=d_name,fg='black',bg='white',font=('TimesNewRoman',12),justify='center',width=20,height=2)
d.place(x = 50, y = 210)e_name = tk.StringVar()
e_name.set("user name")
e = tk.Label(window,anchor='nw',textvariable=e_name,fg='black',bg='white',font=('TimesNewRoman',12),justify='center',width=50,height=1)
e.place(x = 50, y = 290)f_name = tk.StringVar()
f_name.set("password")
f = tk.Label(window,anchor='nw',textvariable=f_name,fg='black',bg='white',font=('TimesNewRoman',12),justify='center',width=50,height=1)
f.place(x = 50, y = 350)g = tk.Button(window, text='login', width=4,height=1, command=compare)
g.place(x = 330,y = 410)var_usr_name = tk.StringVar()
entry_usr_name = tk.Entry(window, textvariable=var_usr_name)
entry_usr_name.place(x=270, y=290)
var_usr_pwd = tk.StringVar()
entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*')
entry_usr_pwd.place(x=270, y=350)window.mainloop()

效果:

 


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

相关文章

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&…

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.素材准备 准备两…