【python进阶】python图形化编程之美--tkinter模块初探

✨✨ 欢迎大家来到景天科技苑✨✨
🎈🎈 养成好习惯,先赞后看哦~🎈🎈
🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。所属的专栏:python图形化GUI编程tkinter精讲
景天的主页:景天科技苑
文章目录
- 1.GUI 图形用户界面编程
- 2.python中常用的 GUI 库
- 1.tkinter 模块
- 2.GUI编写程序步骤
- 1. 创建应用程序主窗口对象(也称:根窗口)
- 2. 在主窗口中,添加各种可视化组件,比如:按钮(Button)、文本框(Label)等。
- 3. 通过几何布局管理器,管理组件的大小和位置
- 4. 事件处理
- 5.完整代码
1.GUI 图形用户界面编程
我们之前实现的都是基于控制台的程序,程序和用户的交互通过控制台来完成。
本章,我们将学习 GUI(Graphics User Interface),即图形用户界面编程,我们
可以通过 python 提供的丰富的组件,快速的实现使用图形界面和用户交互。
GUI 编程类似于“搭积木”,将一个个组件(Widget)放到窗口中。如下是 windows 中的
画图软件,就是一个典型的 GUI 程序:

上面的各种按钮、菜单、编辑区域等都是一个个组件,它们都放置到窗口中,并通过增
加“对事件的处理”成为一个完整的程序。
2.python中常用的 GUI 库
-
- Tkinter
tkinter(Tk interface)是 Python 的标准 GUI 库,支持跨平台的 GUI 程序开发。tkinter
适合小型的 GUI 程序编写,也特别适合初学者学习 GUI 编程。本章以 tkinter 为核心进行讲解。
- Tkinter
-
- wxPython
wxPython 是比较流行的 GUI 库,适合大型应用程序开发,功能强于 tkinter,整体设计框架类似于 MFC(Microsoft Foundation Classes 微软基础类库)。
- wxPython
-
- PyQT
Qt 是一种开源的 GUI 库,适合大型 GUI 程序开发,PyQT 是 Qt 工具包标准的 Python 实现。我们也可以使用 Qt Desginer 界面设计器快速开发 GUI 应用程序。
- PyQT
1.tkinter 模块
本章中,涉及大量的 API 讲解。学习 API 最好的来源就是官方提供的文档:tkinter 官
方网址:https://docs.python.org/3.11/library/tk.html

2.GUI编写程序步骤
GUI 编程的核心步骤和第一个 GUI 程序
基于 tkinter 模块创建 GUI 程序包含如下 4 个核心步骤:
1. 创建应用程序主窗口对象(也称:根窗口)
(1) 通过类 Tk 的无参构造函数
from tkinter import *
#创建个窗口
root = Tk()
此时创建窗口,运行后不会出现我们创建的窗口

此时,需要调用组件的 mainloop 方法,进入事件循环,才会出现窗口
root.mainloop()
此时就会弹出窗口,程序处于阻塞状态。就是个死循环,用来监听用户是否有操作,进入相应的方法执行一些事件

2. 在主窗口中,添加各种可视化组件,比如:按钮(Button)、文本框(Label)等。
#创建button对象,将窗口作为参数传进去,表示把button放进窗口里
btn01 = Button(root)
btn01["text"] = "点我就送花"
3. 通过几何布局管理器,管理组件的大小和位置
btn01.pack()
此时运行程序,只显示个按钮,点击也没反应

需要对事件进行处理
4. 事件处理
(1) 通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)
#事件处理
#通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)
#方法里面传一个参数,e表示事件对象
def songhua(e):#显示到窗口上的信息,需要导入模块messageboxmessagebox.showinfo("Message","送你一朵玫瑰花,请你爱上我")print("送你 99 朵玫瑰花")print("e是什么",e)#事件绑定,bind第一个参数 <Button-1>表示鼠标左键单击,第二个参数是事件函数
btn01.bind("<Button-1>",songhua)
此时运行程序,点击按钮,就会在窗口上显示出我们设置的内容

点击确定,可以看到控制台打印

5.完整代码
from tkinter import *
from tkinter import messagebox#创建个窗口
root = Tk()#在主窗口中,添加各种可视化组件,比如:按钮(Button)、文本框(Label)等。
#创建button对象,将窗口作为参数传进去,表示把button放进窗口里
btn01 = Button(root)
btn01["text"] = "点我就送花"#通过几何布局管理器,管理组件的大小和位置
btn01.pack()#事件处理
#通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)
#方法里面传一个参数,e表示事件对象
def songhua(e):#显示到窗口上的信息,需要导入模块messageboxmessagebox.showinfo("Message","送你一朵玫瑰花,请你爱上我")print("送你 99 朵玫瑰花")print("e是什么",e)#事件绑定,bind第一个参数 <Button-1>表示鼠标左键单击,第二个参数是事件函数
btn01.bind("<Button-1>",songhua)#需要调用组件的 mainloop 方法,进入事件循环,才会出现窗口
root.mainloop()
相关文章:
【python进阶】python图形化编程之美--tkinter模块初探
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
discuz点微同城源码34.7+全套插件+小程序前端
discuz点微同城源码34.7全套插件小程序前后端 模板挺好看的 带全套插件 自己耐心点配置一下插件 可以H5可以小程序...
ActiveMQ 介绍、下载、安装和控制台
ActiveMQ 介绍 Apache ActiveMQ 是一款非常成熟且功能全面的开源消息中间件,由Apache软件基金会维护。它遵循 Java Message Service (JMS) 规范,这意味着它提供了一组标准的 API,允许 Java 应用程序以一种标准化的方式发送和接收消息。 以下…...
MacOS M系列芯片一键配置多个不同版本的JDK
第一步:下载JDK。 官网下载地址:Java Archive | Oracle 选择自己想要下载的版本,一般来说下载一个jdk8和一个jdk11就够用了。 M系列芯片选择这两个,第一个是压缩包,第二个是dmg可以安装的。 第二步:编辑…...
源码文章上传无忧,论坛小程序支持
前言 在数字化时代,知识的分享与传播显得愈发重要。为了满足广大创作者和求知者的需求,我们推出了全新的论坛小程序,不仅支持文章、源码、链接等多样化内容的上传,还实现了付费观看功能,为创作者们提供了一个展示才华…...
Docker面试整理-如何优化Docker容器的性能?
优化Docker容器的性能可以从多个方面入手,以下是一些建议: 选择合适的基础镜像:使用轻量级的基础镜像,如基于Alpine Linux的镜像,可以减少镜像的大小和启动时间。避免使用过于庞大的操作系统镜像。优化Dockerfile:减少Dockerfile中的不必要指令和层,以最小化镜像的大小。…...
list(二)和_stack_queue
嗨喽大家好,时隔许久阿鑫又给大家带来了新的博客,list的模拟实现(二)以及_stack_queue,下面让我们开始今天的学习吧! list(二)和_stack_queue 1.list的构造函数 2.设计模式之适配器和迭代器 3.新容器de…...
查询SQL02:寻找用户推荐人
问题描述 找出那些 没有被 id 2 的客户 推荐 的客户的姓名。 以 任意顺序 返回结果表。 结果格式如下所示。 题目分析: 这题主要是要看这null值会不会用,如果说Java玩多了,你去写SQL时就会有问题。在SQL中判断是不是null值用的是is null或…...
2、Tomcat 线程模型详解
2、Tomcat 线程模型详解 Tomcat I/O模型详解Linux I/O模型详解I/O要解决什么问题Linux的I/O模型分类 Tomcat支持的 I/O 模型Tomcat I/O 模型如何选型 网络编程模型Reactor线程模型单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 Tomcat NIO实现Tomcat 异步IO实现 Tomc…...
对硬盘的设想:纸存、执行存
固态硬盘出现后,发现它的擦写次数受限,越是便宜的固态硬盘,擦写次数越少。于是,有了“纸存”的设想,即硬盘上的单元只能改写一次,就像拿钢笔在纸上写字一样。这时,文件系统、数据库该怎么设计&a…...
最新付会进群多群同时变现社群系统V3.5.3版本 详细教程+源码下载
市面1888最新付费进群多群同时变现系统V3.5.3版本 详细教程源码下载介绍: 续男粉变现,相亲群变现后 演化出来的最新多群同时变现系统 可同时进行40个群同时变现 可设置地域群,相亲,男粉变现等多种群 购买后包括详细的 域名服…...
python tk实现标签切换页面
import tkinter as tk from tkinter import ttk# 初始化主窗口 root tk.Tk() root.title("标签页示例")# 设置窗口大小 root.geometry("400x300")# 创建 Notebook 小部件 notebook ttk.Notebook(root) notebook.pack(expandTrue, fill"both")#…...
引擎:UI
一、控件介绍 Button 按钮 创建一个按钮 按钮禁用 精灵模式 颜色模式 缩放模式 绑定点击事件 EditBox 输入框 Layout 布局 支持水平排列、垂直排列、背包排列 PageView 页面视图 ProgressBar 进度条 RichText 富文本 绑定点击事件 事件可以被其它标签包裹 图文混排 Scroll…...
Redis常见异常及优化方案
Redis常见异常及优化方案 Redis集群(redis-cluster)中的三主三从或者哨兵(sentinel)模式配置是一种常见的高可用架构,用于解决单点故障和提高数据可靠性。然而,即使在这样的配置下,仍然可能会遇…...
YOLOV5 图像分割:利用yolov5进行图像分割
1、介绍 本章将介绍yolov5的分割部分,其他的yolov5分类、检测项目参考之前的博文 分类:YOLOV5 分类:利用yolov5进行图像分类_yolov5 图像分类-CSDN博客 检测:YOLOV5 初体验:简单猫和老鼠数据集模型训练-CSDN博客 yolov5的分割和常规的分割项目有所区别,这里分割的结果…...
如何在Linux中使用Screen管理后台进程
如何在Linux中使用Screen管理后台进程 在Linux系统中,screen是一个非常有用的工具,它允许用户在一个终端窗口中创建多个虚拟终端,并且可以在这些终端之间切换,甚至可以在断开连接后重新连接到这些会话。这对于需要在后台运行长时…...
互联网轻量级框架整合之SpringMVC初始化及各组件工作原理
Spring MVC的初始化和流程 MVC理念的发展 SpringMVC是Spring提供给Web应用领域的框架设计,MVC分别是Model-View-Controller的缩写,它是一个设计理念,不仅仅存在于Java中,各类语言及开发均可用,其运转流程和各组件的应…...
【Android面试八股文】finally中的代码一定会执行吗?try里有return,finally还执行么?
文章目录 finally中的代码一定会执行吗?try里有return,finally还执行么?这道题想考察什么?考察的知识点考生应该如何回答验证特殊情况线程是守护线程遇到System.exit()finally中的代码一定会执行吗?try里有return,finally还执行么? 这道题想考察什么? 对Java语言的深…...
微服务第一轮
课程文档 目录 一、业务流程 1、登录 Controller中的接口: Service中的实现impl: Service中的实现impl所继承的接口IService(各种方法): VO: DTO: 2、搜索商品 Controller中的接口&a…...
Linux 命令 FIO:深入理解磁盘性能测试工具
Linux 命令 FIO:深入理解磁盘性能测试工具 在 Linux 系统中,磁盘 I/O 性能对于系统的整体性能至关重要。为了准确、快速地评估磁盘性能,我们需要一个强大的工具来模拟各种磁盘读写场景。FIO(Flexible I/O Tester)就是…...
从“一次性消耗”到“长效资产”:头部品牌如何用易元AI搭建视频中台
2026年,电商内容竞争已从“数量比拼”升级为“资产价值比拼”。传统视频生产是“一次性消耗”——拍完即弃、素材零散、复用率低,内容投入仅为短期成本;而头部品牌已通过视频资产化与AI内容中台,将内容从“成本项”转为“资产项”…...
Windows下Power Shell快速激活venv虚拟环境的正确姿势(避坑指南)
Windows下Power Shell快速激活venv虚拟环境的正确姿势(避坑指南) 在Windows平台上使用Python进行开发时,虚拟环境(venv)是隔离项目依赖的必备工具。然而,许多从Linux/macOS转向Windows的开发者,…...
嵌入式开发调试宏与性能优化实战
1. 嵌入式开发调试宏的妙用在嵌入式开发中,调试是最耗时耗力的环节之一。每次修改代码后都需要重新烧录、运行、观察结果,这个过程往往要重复数十次。而合理使用编译器提供的调试宏,可以大幅提升调试效率。1.1 基础调试宏解析GCC编译器提供了…...
Ultimate ASI Loader深度解析:构建Windows游戏插件生态系统的技术实践
Ultimate ASI Loader深度解析:构建Windows游戏插件生态系统的技术实践 【免费下载链接】Ultimate-ASI-Loader The Ultimate ASI Loader is a proxy DLL that loads custom .asi libraries into any game process. 项目地址: https://gitcode.com/gh_mirrors/ul/Ul…...
SVN分支管理避坑指南:为什么你的Merge two different trees总会删文件?
SVN分支合并的底层逻辑与实战避坑指南 当你面对SVN分支合并时是否经常遇到文件神秘消失的情况?特别是使用TortoiseSVN的"Merge two different trees"功能时,那些本应保留的文件为何总是不翼而飞?本文将深入解析SVN合并的底层机制&a…...
小爱音箱音乐自由播放器:解锁无限听歌体验的完整指南
小爱音箱音乐自由播放器:解锁无限听歌体验的完整指南 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 你是否厌倦了音乐平台的各种限制?是否想…...
鸣鸣很忙上市后首份年报:营收662亿同比增长 经调整净利27亿
雷递网 雷建平 3月31日湖南鸣鸣很忙商业连锁股份有限公司(简称:“鸣鸣很忙”,股份代号:1768)今日发布截至2025年12月31日的财报。财报显示,鸣鸣很忙2025年营收为661.7亿元,较上年他同期的393.44…...
张量维度操控心法:从reshape到升维降维,吃透PyTorch形状操作的底层逻辑
✨ 张量维度操控心法:从reshape到升维降维,吃透PyTorch形状操作的底层逻辑🔐 张量形状操作的黄金法则:形状是视角,内容是本质🔧 reshape函数:零侵入的形状重塑神器核心原理与执行规则实操代码与…...
Apache Flink Agents 0.2.1 发布公告
Apache Flink 社区很高兴地宣布发布 Apache Flink Agents 0.2 系列的首个缺陷修复版本。 此版本包含 3 项缺陷和漏洞修复以及一些对Flink-Agents 0.2的小幅改进。下面列出了所有缺陷修复和改进内容(不包括构建基础设施和构建稳定性方面的改进)。如需查看…...
fre:ac开源音频转换工具:让无损音乐在全设备自由流动的专业级解决方案
fre:ac开源音频转换工具:让无损音乐在全设备自由流动的专业级解决方案 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac 你是否遇到过这些音乐管理难题:珍藏多年的CD专辑不知如何数…...
