Tkinter 是 Python 的标准 GUI 库,提供了丰富的组件和方法来构建图形界面应用。以下是其核心方法及使用示例:
1. 主窗口 Tk
的常用方法
title()
: 设置窗口标题geometry()
: 设置窗口大小和位置mainloop()
: 启动主事件循环destroy()
: 关闭窗口
import tkinter as tk
root = tk.Tk()
root.title("示例窗口")
root.geometry("300x200") # 格式: 宽x高
root.mainloop() # 保持窗口运行
2. 组件(Widgets)的通用方法
所有组件(如 Label
, Button
, Entry
)都继承自 Widget
类,支持以下方法:
pack()
/grid()
/place()
: 布局管理器config()
: 修改组件属性bind()
: 绑定事件
3. 常用组件及方法示例
Label(标签)
config(text="新内容")
: 动态更新文本
label = tk.Label(root, text="初始文本")
label.pack()
# 点击按钮后修改标签内容
def update_label():
label.config(text="内容已更新!")
tk.Button(root, text="更新", command=update_label).pack()
Button(按钮)
command
参数: 绑定点击事件
def say_hello():
print("Hello Tkinter!")
button = tk.Button(root, text="点击", command=say_hello)
button.pack()
Entry(输入框)
get()
: 获取输入内容insert()
/delete()
: 插入或删除内容
entry = tk.Entry(root)
entry.pack()
def show_entry():
print("输入内容:", entry.get())
tk.Button(root, text="显示输入", command=show_entry).pack()
Text(多行文本框)
insert()
/delete()
/get()
: 操作文本
text = tk.Text(root)
text.pack()
text.insert("1.0", "初始文本") # 在第1行第0列插入
text.delete("1.0", tk.END) # 清空内容
4. 布局管理器
pack()
- 按顺序排列组件
tk.Label(root, text="上方").pack(side="top")
tk.Label(root, text="下方").pack(side="bottom")
grid()
- 按网格行列布局
tk.Label(root, text="第0行第0列").grid(row=0, column=0)
tk.Label(root, text="第1行第1列").grid(row=1, column=1)
place()
- 绝对或相对位置布局
tk.Label(root, text="绝对位置").place(x=50, y=20)
5. 事件绑定
bind()
: 绑定键盘/鼠标事件
def on_key(event):
print("按下按键:", event.keysym)
root.bind("<Key>", on_key) # 绑定键盘事件
6. 弹窗和对话框
使用 messagebox
和 filedialog
子模块:
from tkinter import messagebox, filedialog
# 信息弹窗
messagebox.showinfo("提示", "操作成功!")
# 文件选择对话框
file_path = filedialog.askopenfilename()
print("选择文件:", file_path)
7. 变量控制(StringVar, IntVar)
动态绑定组件内容:
text_var = tk.StringVar()
entry = tk.Entry(root, textvariable=text_var)
entry.pack()
# 修改变量会自动更新关联的组件
text_var.set("默认文本")
print("当前值:", text_var.get())
综合示例:登录窗口
import tkinter as tk
from tkinter import messagebox
def login():
username = entry_user.get()
password = entry_pass.get()
if username == "admin" and password == "123":
messagebox.showinfo("登录结果", "登录成功!")
else:
messagebox.showerror("登录结果", "用户名或密码错误")
root = tk.Tk()
root.title("登录")
tk.Label(root, text="用户名:").grid(row=0, column=0)
entry_user = tk.Entry(root)
entry_user.grid(row=0, column=1)
tk.Label(root, text="密码:").grid(row=1, column=0)
entry_pass = tk.Entry(root, show="*")
entry_pass.grid(row=1, column=1)
tk.Button(root, text="登录", command=login).grid(row=2, columnspan=2)
root.mainloop()
通过上述方法,您可以快速构建交互式 GUI 应用。更多细节可参考 Tkinter 官方文档。