惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
G
Google Developers Blog
博客园 - 三生石上(FineUI控件)
Last Week in AI
Last Week in AI
IT之家
IT之家
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
爱范儿
爱范儿
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
U
Unit 42
Security Archives - TechRepublic
Security Archives - TechRepublic
C
Cisco Blogs
S
Schneier on Security
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
Microsoft Security Blog
Microsoft Security Blog
The Cloudflare Blog
博客园 - 聂微东
C
Cybersecurity and Infrastructure Security Agency CISA
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
M
MIT News - Artificial intelligence
aimingoo的专栏
aimingoo的专栏
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
MongoDB | Blog
MongoDB | Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
V2EX
L
Lohrmann on Cybersecurity
Latest news
Latest news
小众软件
小众软件
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
Simon Willison's Weblog
Simon Willison's Weblog
B
Blog
雷峰网
雷峰网
K
Kaspersky official blog
美团技术团队
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Check Point Blog
Recorded Future
Recorded Future
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security

博客园 - 箫笛

Tkinter - Button 组件 Tkinter - Label 组件 Tkinter - tk 变量 Tkinter - 事件与绑定 Tkinter - 几何管理器 Tkinter - 核心概念 Tkinter - 快速开始 Python 编程 - 条件表达式 Python 编程 - 星号下划线参数释义 shell 编程 - shell 脚本的交互方式 Python insall - macOS 系统安装python的几种方式 Miniconda - Python 环境管理工具 Tkinter - Python GUI 开发 Python 编程 - 下划线命名的区别 Python 编程 - 元类编程 Python 编程 - 多重继承与MRO Python 编程 - 描述符协议 Python 编程 - 类型注解 Python 编程 - 生成器表达式 Python 编程 - 集合 Python 编程 - 装饰器 Python 编程 - 闭包 Python 编程 - 列表推导式 Python 编程 - 函数式编程 Python 编程 - lambda 函数 Python 编程 - 文件操作 Python 编程 - 输入与输出 Python 编程 - 面向对象编程 Python 编程 - 元组(tuple) Python 编程 - 字符串(str) Python 编程 - 字典(dict) Python 编程 - 列表(list) Python 编程 - 数据类型和数据结构 Python 编程 - 语句 Python 编程 - 函数 windows - WSL 的安装与使用 shell编程 - dialog 程序使用指南 FE Team - 如何做好前端代码审查 git 提交的撤销和恢复 React15 - redux-saga 如何在saga中实现轮询接口调用? React15 - React CSS Modules BEM命名实践 React15 - React 15 中 componentWillReceiveProps 为什么会多次调用, 同时componentDidUpdate 也会多次调用? React15 - React15类组件多次执行render方法的原因? React15 - React15应用中代码逻辑复用方案 React15 - React状态同步问题解决 React15 - React 15 中 React.pureComponent 的使用场景 React15 - React 15应用在页面渲染时会多次执行类组件的render 函数的原因 React15 - React 15 中能用 componetDidUpdate 代替 componentWillReceiveProps 吗? React15 - React 15 生命周期函数详解 React15 - 如何在React 15中实现自定义的事件订阅与发送(例如组件间通信) React15 - React15应用中的事件订阅和发送机制 React15 - CSS中的BEM规范 React15 - React CSS Modules BEM命名实践 React15 - 写sass 样式文件,嵌套的结构好,还是扁平的结构好? React15 - sass 中 @mixin 和 @extend 的区别是什么? React15 - React 15 应用 如何使用Css moudules 方式进行模块化开发 React15 - React15应用Sass使用指南 React15 - React 15 应用如何进行性能优化?
Tkinter - 介绍
箫笛 · 2026-07-08 · via 博客园 - 箫笛

什么是Tkinter?
Tkinter是Python的标准GUI库——它是构建在Tcl/Tk(一个成熟的跨平台窗口工具包)之上的一个轻量级面向对象层。它随每个标准Python发行版一起提供,无需额外安装。

使用Tkinter,您可以构建窗口、对话框、表单、数据录入工具、可视化图表以及完整的桌面应用程序,而且这些应用只需一套代码即可在Windows、macOS和Linux上运行。

import tkinter as tk
from tkinter import ttk

def greet():
    label.config(text=f"Hello, {name.get()}!")

root = tk.Tk()
root.title("Hello Tkinter")
root.geometry("300x120")

name = tk.StringVar()
ttk.Entry(root, textvariable=name).pack(pady=12)
ttk.Button(root, text="Greet", command=greet).pack()
label = ttk.Label(root, text="")
label.pack(pady=8)

root.mainloop()

这段代码是一个经典的 Tkinter 入门示例,创建了一个简单的图形界面应用程序。下面逐部分分析:


1. 导入模块

import tkinter as tk
from tkinter import ttk
  • tkinter as tk:导入标准 GUI 库并简写为 tk,包含基础组件(窗口、事件循环等)。
  • from tkinter import ttk:导入 主题化组件库(Themed Tkinter),提供更现代、更美观的控件(如带主题的按钮、输入框等),并自动适配操作系统风格。

2. 定义回调函数

def greet():
    label.config(text=f"Hello, {name.get()}!")
  • 当按钮被点击时执行。
  • StringVar 变量 name 中获取输入框的内容(name.get())。
  • 通过 label.config(text=...) 更新标签的显示文本。

3. 创建主窗口

root = tk.Tk()
root.title("Hello Tkinter")
root.geometry("300x120")
  • tk.Tk():创建应用程序的主窗口(根窗口)。
  • title():设置窗口标题。
  • geometry():设置窗口初始大小为 300×120 像素

4. 创建控件

name = tk.StringVar()
ttk.Entry(root, textvariable=name).pack(pady=12)
ttk.Button(root, text="Greet", command=greet).pack()
label = ttk.Label(root, text="")
label.pack(pady=8)
控件 说明
StringVar() Tkinter 的字符串变量,用于双向绑定——输入框内容变化时变量同步更新,反之亦然。
ttk.Entry 单行文本输入框,textvariable=name 将其与 name 变量绑定。
ttk.Button 按钮,text 为显示文字,command=greet 指定点击时调用的函数。
ttk.Label 标签,初始文本为空,后续通过 config() 动态更新。

布局管理器 .pack()

  • 按顺序 从上到下 垂直排列控件。
  • pady 参数添加垂直方向的外边距(上下各指定像素),让控件之间不拥挤。

5. 启动事件循环

root.mainloop()
  • 进入 事件循环,程序开始监听并响应用户操作(点击按钮、输入文本、窗口缩放等)。
  • 这是 GUI 应用程序的"发动机",调用后窗口才会显示并保持响应,直到用户关闭窗口。

程序运行效果

  1. 窗口标题为 "Hello Tkinter",大小 300×120。
  2. 顶部有一个输入框,用户可以输入名字。
  3. 中间有一个 "Greet" 按钮。
  4. 底部有一个标签(初始空白)。
  5. 点击按钮后,标签显示 Hello, [输入的名字]!

代码结构总览

导入模块
    ↓
定义 greet() 回调函数
    ↓
创建根窗口 → 设置标题/大小
    ↓
创建 StringVar 变量
    ↓
依次创建并布局:输入框 → 按钮 → 标签
    ↓
启动 mainloop() 事件循环

补充说明

  • 这里所有控件都直接在根窗口上 pack(),没有使用容器框架,适用于简单布局。
  • 如果需要更复杂的布局,可以考虑 grid()place() 布局管理器,或使用 ttk.Frame 作为容器分组。
  • StringVar 还提供了 .set() 方法,可用于程序主动修改输入框或标签的内容。