1. 创建主窗口
每个Tkinter应用都需要一个主窗口,作为其他组件的容器。
import tkinter as tk
# 创建主窗口
root = tk.Tk()
root.title("我的第一个Tkinter应用")
root.geometry("400x300")
# 运行主循环
root.mainloop()
从零开始掌握Python GUI编程,构建桌面应用程序
Tkinter是Python的标准GUI库,用于创建桌面应用程序界面。它基于Tk GUI工具包,提供了创建窗口、按钮、文本框等组件的功能。
每个Tkinter应用都需要一个主窗口,作为其他组件的容器。
import tkinter as tk
# 创建主窗口
root = tk.Tk()
root.title("我的第一个Tkinter应用")
root.geometry("400x300")
# 运行主循环
root.mainloop()
用于显示文本或图像,不可编辑。
import tkinter as tk
root = tk.Tk()
root.title("标签示例")
# 创建标签
label = tk.Label(root, text="欢迎使用Tkinter!",
font=("Arial", 16),
fg="blue",
bg="#f0f0f0",
padx=10, pady=5)
label.pack(pady=20)
root.mainloop()
用于触发操作,可绑定事件处理函数。
import tkinter as tk
from tkinter import messagebox
def on_button_click():
messagebox.showinfo("提示", "你点击了按钮!")
root = tk.Tk()
root.title("按钮示例")
button = tk.Button(root, text="点击我",
command=on_button_click,
bg="#4CAF50",
fg="white",
font=("Arial", 12),
padx=15, pady=8)
button.pack(pady=30)
root.mainloop()
用于接收单行文本输入。
import tkinter as tk
def get_text():
result_label.config(text="输入内容: " + entry.get())
root = tk.Tk()
root.title("输入框示例")
root.geometry("400x200")
entry = tk.Entry(root, width=30, font=("Arial", 12))
entry.pack(pady=20)
button = tk.Button(root, text="获取文本", command=get_text)
button.pack()
result_label = tk.Label(root, text="", font=("Arial", 12))
result_label.pack(pady=10)
root.mainloop()
用于显示和编辑多行文本。
import tkinter as tk
def clear_text():
text_area.delete(1.0, tk.END)
root = tk.Tk()
root.title("文本域示例")
text_area = tk.Text(root, height=10, width=50, font=("Arial", 12))
text_area.pack(padx=20, pady=10)
text_area.insert(tk.END, "在此输入多行文本...")
clear_button = tk.Button(root, text="清空内容", command=clear_text)
clear_button.pack(pady=10)
root.mainloop()
Tkinter提供三种布局管理器:pack、grid和place。
按照垂直或水平方向自动排列组件。
# 垂直排列
label1.pack()
label2.pack()
# 水平排列
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
使用行和列组成的网格来排列组件。
# 创建2x2网格
label1.grid(row=0, column=0)
label2.grid(row=0, column=1)
button1.grid(row=1, column=0)
button2.grid(row=1, column=1)
通过指定精确位置来放置组件。
# 在坐标(100,50)处放置按钮
button.place(x=100, y=50)
# 相对位置放置
button.place(relx=0.5, rely=0.5,
anchor=tk.CENTER)
显示可滚动的项目列表。
listbox = tk.Listbox(root, height=5)
listbox.pack()
# 添加项目
for item in ["Python", "Java", "C++", "JavaScript"]:
listbox.insert(tk.END, item)
提供多选功能。
var1 = tk.IntVar()
var2 = tk.IntVar()
check1 = tk.Checkbutton(root, text="选项1", variable=var1)
check2 = tk.Checkbutton(root, text="选项2", variable=var2)
check1.pack()
check2.pack()
提供单选功能。
var = tk.StringVar()
var.set("Python")
radio1 = tk.Radiobutton(root, text="Python",
variable=var, value="Python")
radio2 = tk.Radiobutton(root, text="Java",
variable=var, value="Java")
radio1.pack()
radio2.pack()
下拉选择框(需要导入ttk模块)。
from tkinter import ttk
combo = ttk.Combobox(root,
values=["选项1", "选项2", "选项3"])
combo.pack()
combo.current(0) # 设置默认选项
以下是一个简单的登录界面示例,结合了多种Tkinter组件:
import tkinter as tk
from tkinter import messagebox
def validate_login():
username = username_entry.get()
password = password_entry.get()
if username == "admin" and password == "password":
messagebox.showinfo("登录成功", f"欢迎, {username}!")
else:
messagebox.showerror("登录失败", "用户名或密码错误")
# 创建主窗口
root = tk.Tk()
root.title("登录系统")
root.geometry("350x250")
# 标题标签
title_label = tk.Label(root, text="用户登录",
font=("Arial", 18, "bold"),
pady=10)
title_label.pack()
# 用户名输入框
username_frame = tk.Frame(root)
username_frame.pack(pady=5, fill=tk.X, padx=50)
tk.Label(username_frame, text="用户名:").pack(side=tk.LEFT)
username_entry = tk.Entry(username_frame)
username_entry.pack(side=tk.RIGHT, expand=True, fill=tk.X)
# 密码输入框
password_frame = tk.Frame(root)
password_frame.pack(pady=5, fill=tk.X, padx=50)
tk.Label(password_frame, text="密 码:").pack(side=tk.LEFT)
password_entry = tk.Entry(password_frame, show="*")
password_entry.pack(side=tk.RIGHT, expand=True, fill=tk.X)
# 登录按钮
login_button = tk.Button(root, text="登录",
command=validate_login,
bg="#4CAF50", fg="white",
width=15, pady=5)
login_button.pack(pady=20)
root.mainloop()
探索Tkinter高级主题:自定义组件、数据库集成、打包为可执行文件等
本文由ZhenZa于2025-07-30发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20256825.html
发表评论