Tkinter简介

article/2025/9/24 16:13:36

Tkinter简介

(也叫 Tk 接口)是 Tk 图形用户界面工具包标准 的 Python 接口。

Tk 是一个轻量级的跨平台图形用户界面 (GUI)开发工具。Tk 和 Tkinter 可以运行在大多数 的 Unix 平台、Windows、和 Macintosh 系统。

由于是Python自带的标准库,我们想要使用它的时候,只需直接导入即可。

from tkinter import *

支持的组件有:

 

Tkinter常用组件使用介绍

上述为大家列出了中的常用组件。各个组件有其相对应的功能和用法,而我们可以根据我这些控件来展现出我们想要的效果。

这里先给大家简单介绍一下常用的,也是本文里会用到的一些组件。

1. Button(按钮控件)

Button组件是用来触发事件的,它会在窗口上以按钮的方式显示,在你单击它的时候就会运行与Button绑定的函数。

from tkinter import *

def b1():

root['bg'] = "blue"

root = Tk()

str1 = "Hello World"

Button(root,text = str1,command = b1).place(x=,y=)

root.mainloop()

效果如下:

2. Label(标签控件)

Label是标签控件,能在指定的窗口中显示的文本和图像。

from tkinter import *

root = Tk()

str1 = "Hello World"

Label(root,text=str1).place(x=,y=)

root.mainloop()

效果如下:

 

3. Entry(文本框)

Entry是文本框,用来让用户输入一行文本字符串,也可以用来显示文本字符串。在使用Entry的时候,我们需要用到一个函数stringVar(),这个函数定义的变量会被一直追踪,当你想要获得该变量当时的值,只需要用该变量的get函数。

from tkinter import *

def b1():

print(str1.get())

root = Tk()

str1 = StringVar()

str1.set("Hello world")

Entry(root,textvariable = str1).place(x=,y=5)

Button(root,text = "输出",command=b1).place(x=150,y=)

root.mainloop()

效果如下:

Tkinter常用几何管理方法使用介绍

上面介绍了一些组件,下面再为大家介绍一下的一些几何管理方法。所谓的就是用来组织和管理整个父配件区中子配件的布局的。

正是有这些几何方法的存在,我们才可以随心所欲的,将组件安排在我们想让它出现的地方,所有的Tkinter组件都包含专用的几何管理方法。

1. pack()

几何管理,采用块的方式组织配件,常用在开发简单的界面。pack几何管理程序根据组件创建生成的顺序,将组件添加到父组件中去。如果不指定任何选项,默认在父窗体中自顶向下添加组件。

from tkinter import *

root = Tk()

Button(root,text='1',width=5).pack()

Button(root,text='2',width=5).pack()

Button(root,text='3',width=5).pack(side="left")

Button(root,text='4',width=5).pack(side = "right")

Button(root,text='5',width=5).pack(side = "bottom")

Button(root,text='6',width=5).pack()

root.mainloop()

效果如下:

2. grid()

几何管理,采用表格结构组织配件,通过行(row)列(column)来确定组件摆放的位置,这也是它的两个重要的参数。

from tkinter import *

root = Tk()

Button(root,text='1',width=5).grid(row=,column=)

Button(root,text='2',width=5).grid(row=,column=1)

Button(root,text='3',width=5).grid(row=,column=2)

Button(root,text='4',width=5).grid(row=1,column=)

Button(root,text='5',width=5).grid(row=1,column=1)

Button(root,text='6',width=5).grid(row=2,column=)

root.mainloop()

效果如下:

3. place()

几何管理,允许指定组件的大小以及位置,通过x和y的数值来确定组件的位置,通过width和height来确定组件的大小。

from tkinter import *

root = Tk()

Button(root,text='1',width=5).place(x=80,y=)

Button(root,text='2',width=5).place(x=80,y=170)

Button(root,text='3',width=5).place(x=,y=85)

Button(root,text='4',width=5).place(x=155,y=85)

Button(root,text='5',width=5).place(x=70,y=70,width=60,height=60)

root.mainloop()

效果如下:

 

Tkinter实现弹窗提示

有时候,我们想要实现一个功能。此时,可以使用tkinter.messagebox,这个也是Python自带的。在我们需要实现弹窗功能的时候,只需要将其导入,使用对应的函数,再输入对应的参数,一个小弹窗就做好了。

效果如下:

Tkinter案例讲解

通过上述对的讲解,我们基本可以上手制作一个属于自己的界面窗口了。最后,还是通过一个案例讲解,为大家讲述它的使用。

需求:我写了一段的窗口,但是想要制作一个界面,能够随意选择路径,当我点击后,就可以完成文件夹的自动整理。

下面是最后制作的界面效果,基本功能都实现了,同时还多出了两个功能,和,是不是很棒?

 

关于的程序,黄同学已经给出了。我在他的基础上,结合,最终制作出了这个界面。完整代码如下:

from tkinter.filedialog import askdirectory

from tkinter import *

import time

import datetime

import os

import shutil

import pyperclip

import tkinter.messagebox

class MY_GUI():

def __init__(self,init_window_name):

self.init_window_name = init_window_name

self.path = StringVar()

def selectPath(self): #选择路径

path_ = askdirectory()

self.path.set(path_)

def error(self): #错误弹窗

tkinter.messagebox.showinfo(title="提示", message="未选择路径")

def uptime(self): #更新时间

TimeLabel["text"] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:') + "%d" % (datetime.datetime.now().microsecond // 100000)

self.init_window_name.after(100, self.uptime)

#设置窗口

def set_init_window(self):

self.init_window_name.title("数据分析与统计学之美") #窗口标题栏

self.init_window_name.geometry('300x300+600+300') #窗口大小,300x300是窗口的大小,+600是距离左边距的距离,+300是距离上边距的距离

self.init_window_name.resizable(width=FALSE, height=FALSE) #限制窗口大小,拒绝用户调整边框大小

Label(self.init_window_name, text="欢迎使用一键整理小工具",bg="SkyBlue",fg = "Gray").place(x=80,y=10) #标签组件,用来显示内容,place里的x、y是标签组件放置的位置

Label(self.init_window_name, text="当前路径:",bg="SkyBlue").place(x=15,y=50) #标签组件,用来显示内容,place里的x、y是标签组件放置的位置

Entry(self.init_window_name, textvariable=self.path).place(x=75,y=50) #输入控件,用于显示简单的文本内容

Button(self.init_window_name, text="路径选择", command=self.selectPath,bg="SkyBlue").place(x=225,y=45) #按钮组件,用来触发某个功能或函数

Button(self.init_window_name, text="桌面一键整理",bg="SkyBlue",command=self.option).place(width=200,height=50,x=50,y=100) #按钮组件,用来触发某个功能或函数

Button(self.init_window_name, text="复制所有文件名",bg="SkyBlue", command=self.option1).place(width=200, height=50, x=50, y=180) #按钮组件,用来触发某个功能或函数

self.init_window_name["bg"] = "SkyBlue" #窗口背景色

self.init_window_name.attributes("-alpha",0.8) #虚化,值越小虚化程度越高

global TimeLabel #全局变量

TimeLabel = Label(text="%s%d" % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:'), datetime.datetime.now().microsecond // 100000),bg="SkyBlue") #标签组件,显示时间

TimeLabel.place(x=80, y=260)

self.init_window_name.after(100,self.uptime)

def arrangement(self,str1): #整理文件

file_dict = {

'图片': ['jpg', 'png', 'gif', 'webp'],

'视频': ['rmvb', 'mp4', 'avi', 'mkv', 'flv'],

"音频": ['cd', 'wave', 'aiff', 'mpeg', 'mp3', 'mpeg-4'],

'文档': ['xls', 'xlsx', 'csv', 'doc', 'docx', 'ppt', 'pptx', 'pdf', 'txt'],

'压缩文件': ['7z', 'ace', 'bz', 'jar', 'rar', 'tar', 'zip', 'gz'],

'常用格式': ['json', 'xml', 'md', 'ximd'],

'程序脚本': ['py', 'java', 'html', 'sql', 'r', 'css', 'cpp', 'c', 'sas', 'js', 'go'],

'可执行程序': ['exe', 'bat', 'lnk', 'sys', 'com'],

'字体文件': ['eot', 'otf', 'fon', 'font', 'ttf', 'ttc', 'woff', 'woff2']

}

os.chdir(str1)

folder = os.listdir('.')

for each in folder:

#print(each.split('.')[-1])

for name,type in file_dict.items():

if each.split('.')[-1] in type:

if not os.path.exists(name):

os.mkdir(name)

shutil.move(each,name)

tkinter.messagebox.showinfo(title="提示", message="整理完成")

def copy(self,str1):

os.chdir(str1)

folder = os.listdir('.')

str1 = ''

for each in folder:

type = '.' + each.split('.')[-1]

str1 = str1 + each.replace(type,'') + '\n'

pyperclip.copy(str1)

#获取当前时间

def get_current_time(self):

current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))

return current_time

def option(self):

if self.path.get() == "":

self.error()

else:

self.arrangement(self.path.get())

def option1(self):

if self.path.get() == "":

self.error()

else:

self.copy(self.path.get())

if __name__ == '__main__':

init_window = Tk() # 实例化出一个父窗口

ZMJ_PORTAL = MY_GUI(init_window)

ZMJ_PORTAL.set_init_window()

init_window.mainloop()

从代码里可以看到,为了窗口的整体美观,我们规定了窗口的大小。

#窗口大小,300x300是窗口的大小,+600是距离左边距的距离,+300是距离上边距的距离

self.init_window_name.geometry('300x300+600+300')

还设置了窗口的基本属性。

#窗口标题栏

self.init_window_name.title("数据分析与统计学之美")

#限制窗口大小,拒绝用户调整边框大小

self.init_window_name.resizable(width=FALSE, height=FALSE)

#虚化,值越小虚化程度越高

self.init_window_name.attributes("-alpha",0.8)

#窗口背景色

self.init_window_name["bg"] = "SkyBlue"

所有组件都用了place几何方法,将组件的大小及布局,进行了良好的规划。同时,Button组件也都与其对应的功能函数,进行了链接。

#标签组件,用来显示内容,place里的x、y是标签组件放置的位置

Label(self.init_window_name, text="欢迎使用一键整理小工具",bg="SkyBlue",fg = "Gray").place(x=80,y=10)

#标签组件,用来显示内容,place里的x、y是标签组件放置的位置

Label(self.init_window_name, text="当前路径:",bg="SkyBlue").place(x=15,y=50)

#输入控件,用于显示简单的文本内容

Entry(self.init_window_name, textvariable=self.path).place(x=75,y=50)

#按钮组件,用来触发某个功能或函数

Button(self.init_window_name, text="路径选择",command=self.selectPath,bg="SkyBlue").place(x=225,y=45)

#按钮组件,用来触发某个功能或函数

Button(self.init_window_name, text="桌面一键整理",bg="SkyBlue",command=self.option).place(width=200,height=50,x=50,y=100)

#按钮组件,用来触发某个功能或函数

Button(self.init_window_name, text="复制所有文件名",bg="SkyBlue", command=self.option1).place(width=200, height=50, x=50, y=180)

如果路径为空的时候,需要制作一个弹窗提示:未选择路径。

程序打包与代码获取

程序打包我采用的是pyinstaller命令,在使用该命令前,最重要的当然就是安装啦!

#安装

pip install pyinstaller

#打包指令

pyinstaller -F 数据分析与统计学之美.py

在命令终端输入安装命令,下载安装pyinstaller。下载完成后再切换到存放.py文件的目录里,运行打包指令,待运行结束,我们可以看到目录里多出了一些文件夹和文件。

在dist文件夹中就可以看到打包好的小工具。

 

除了Tkinter,Python还有PyQt5,Kivy,PySimpleGui等。其中最简单易用的PySimpleGui,而使用比较多的还是TkInter和PyQt5。


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

相关文章

tkinter库详解

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

python tkinter详解

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

python-tkinter 官方文档

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

python --Tkinter详解

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

【Python】GUI编程(Tkinter)教程

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

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

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

【Python】Tkinter教程

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

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;找出所有的面孔 我们流水线的第一步是人脸检测。…