Python Tkinter 基础详解

Python Tkinter 基础详解

Tkinter 是 Python 自带的标准GUI图形界面库,无需额外安装,直接导入即可使用,适合做简单桌面软件、窗口、按钮、输入框等。

注意:正确拼写是 Tkinter (Python2)/ tkinter(Python3,小写t),下面统一用 Python3 语法。


一、基础使用流程(固定4步)

  1. 导入库:import tkinter as tk
  2. 创建主窗口:root = tk.Tk()
  3. 放置组件+设置属性
  4. 消息循环:root.mainloop()(必须最后一行,让窗口持续显示)

最简示例

python 复制代码
import tkinter as tk

# 1. 创建主窗口
root = tk.Tk()
root.title("我的第一个窗口")  # 窗口标题
root.geometry("400x300")     # 窗口大小:宽x高

# 2. 运行窗口
root.mainloop()

二、主窗口常用属性

python 复制代码
root.title("标题")                # 窗口标题
root.geometry("宽x高+x偏移+y偏移") # 例:400x300+100+50
root.resizable(False, False)      # 禁止缩放(宽,高)
root.config(bg="white")           # 背景颜色
root.iconbitmap("图标.ico")       # 窗口图标(仅Windows)

三、常用基础组件(核心)

1. 标签 Label(显示文本/图片,不可交互)

python 复制代码
label = tk.Label(root, 
                 text="我是标签",
                 font=("微软雅黑",14),  # 字体、大小
                 bg="#f0f0f0",          # 背景色
                 fg="red",              # 文字颜色
                 width=20, height=3)    # 宽高(字符单位)
label.pack()  # 布局显示

2. 按钮 Button(点击触发函数)

python 复制代码
def click():
    print("按钮被点击了")

btn = tk.Button(root, text="点我", command=click)
btn.pack()
  • command=函数名:点击执行函数,不要加括号

3. 单行输入框 Entry(输入文本)

python 复制代码
entry = tk.Entry(root, width=30)
entry.pack()

# 获取输入内容
def get_text():
    text = entry.get()
    print(text)

tk.Button(root, text="获取", command=get_text).pack()

4. 多行文本框 Text

python 复制代码
text = tk.Text(root, width=40, height=5)
text.pack()

# 插入文字
text.insert(tk.END, "默认文字\n第二行")
# 获取全部内容
content = text.get(1.0, tk.END)

5. 框架 Frame(容器,用来分组布局)

python 复制代码
frame = tk.Frame(root, bg="gray", padx=10, pady=10)
frame.pack()

# 组件放在Frame里
tk.Label(frame, text="分组内标签").pack()

6. 复选框 Checkbutton

python 复制代码
var = tk.IntVar()  # 绑定变量,1选中,0未选中
cb = tk.Checkbutton(root, text="同意协议", variable=var)
cb.pack()

7. 单选框 Radiobutton

python 复制代码
var = tk.StringVar()
r1 = tk.Radiobutton(root, text="男", variable=var, value="男")
r2 = tk.Radiobutton(root, text="女", variable=var, value="女")
r1.pack()
r2.pack()

四、三大布局管理器(重中之重)

Tkinter 必须用布局方式把组件放到窗口上,三选一

1. pack() 流式布局(最简单,从上到下/从左到右)

python 复制代码
widget.pack(
    side=tk.LEFT,    # LEFT/RIGHT/TOP/BOTTOM
    padx=10, pady=5, # 外边距
    fill=tk.X,       # 横向填充
    expand=True      # 拉伸占满剩余空间
)

2. grid() 网格布局(最常用,表格形式)

python 复制代码
widget.grid(
    row=0, column=0,  # 行、列,从0开始
    padx=5, pady=5,
    sticky="nsew"     # 对齐:n上s下w左e右
)

3. place() 绝对布局(指定坐标)

python 复制代码
widget.place(x=50, y=100, width=100, height=30)

五、变量绑定(自动更新)

Tkinter 自带专用变量,组件可直接绑定,自动同步:

  • tk.StringVar() 字符串
  • tk.IntVar() 整数
  • tk.BooleanVar() 布尔
  • tk.DoubleVar() 小数

示例:标签文字动态更新

python 复制代码
import tkinter as tk
root = tk.Tk()
var = tk.StringVar(value="初始文字")

tk.Label(root, textvariable=var).pack()

def change():
    var.set("文字变了!")

tk.Button(root, text="修改", command=change).pack()
root.mainloop()

六、弹窗(消息框 messagebox)

python 复制代码
import tkinter.messagebox as msg

msg.showinfo("提示", "普通信息")
msg.showwarning("警告", "警告信息")
msg.showerror("错误", "出错了")
res = msg.askyesno("确认", "是否继续?")  # 返回True/False

七、简单完整综合案例

python 复制代码
import tkinter as tk
import tkinter.messagebox as msg

root = tk.Tk()
root.title("简易登录界面")
root.geometry("300x200")

# 标签
tk.Label(root, text="用户名:").place(x=50, y=30)
tk.Label(root, text="密码:").place(x=50, y=70)

# 输入框
user = tk.Entry(root, width=20)
pwd = tk.Entry(root, width=20, show="*")  # 密码隐藏
user.place(x=120, y=30)
pwd.place(x=120, y=70)

# 登录函数
def login():
    u = user.get()
    p = pwd.get()
    if u == "admin" and p == "123456":
        msg.showinfo("成功", "登录成功!")
    else:
        msg.showerror("失败", "账号或密码错误")

# 按钮
tk.Button(root, text="登录", command=login, width=10).place(x=100, y=120)

root.mainloop()

八、学习重点总结

  1. 固定结构:导入→创建窗口→组件→布局→mainloop()
  2. 布局优先学 grid(),最实用;简单窗口用 pack()
  3. 按钮绑定函数用 command=函数名,不带括号
  4. 动态内容用 StringVar 等专用变量
  5. 颜色支持英文(red/white)或十六进制(#ffffff)
相关推荐
我滴老baby18 小时前
Agent上线后不知道效果好不好?用Python搭建A/B测试+效果评估平台完整实战
开发语言·人工智能·python·ab测试
P-ShineBeam18 小时前
智能体-DeepAgent入门
人工智能·python·算法·语言模型·自然语言处理
晚烛1 天前
CANN 调试工具与性能剖析:从日志分析到 NPU 行为追踪的完整调试体系
开发语言·windows·python·深度学习·缓存
隔壁大炮1 天前
MNE-Python 第9天学习笔记:源定位基础
python·eeg·mne·脑电数据处理
Daydream.V1 天前
Python Flask超全入门实战教程|从零基础到项目部署
大数据·python·flask
databook1 天前
Manim物理模拟:别自己写欧拉了!
python·数学·动效
香蕉鼠片1 天前
Python进阶学习
开发语言·python
亚亚的学习和分享1 天前
python练习:人生模拟器(简易版)
python
全糖可乐气泡水1 天前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度