微信关注,获取更多

跟着AI学Python 第14课:tkinter 图形界面基础

# === 第14课:tkinter 图形界面基础 ===

import tkinter as tk

# 1. 创建窗口
print("--- 第1段:创建窗口 ---")
window = tk.Tk()
window.title("我的第一个窗口")
window.geometry("400x300")          # 宽x高
window.mainloop()                    # 让窗口一直显示,这是核心!
组件 作用 代码
Label 显示文字 tk.Label(window, text="文字")
Button 按钮 tk.Button(window, text="文字", command=函数)
.pack() 把组件放到窗口上 组件.pack()
.config() 修改组件属性 组件.config(text=”新文字”)

____________

# === 第14课:tkinter 图形界面基础 ===

import tkinter as tk

# 2. 窗口里加标签和按钮
window = tk.Tk()
window.title("第2段:标签和按钮")
window.geometry("400x300")

# 标签:显示文字
label = tk.Label(window, text="你好,火鸟!", font=("微软雅黑", 20))
label.pack(pady=30)                  # pady=上下留30像素间距

# 按钮:点击触发动作
def on_click():
    label.config(text="你点了按钮!")  # 修改标签的文字

button = tk.Button(window, text="点我", font=("微软雅黑", 14), command=on_click)
button.pack(pady=10)

window.mainloop()

____________

# === 第14课:tkinter 图形界面基础 ===

import tkinter as tk

# 3. 输入框:让用户输入内容
window = tk.Tk()
window.title("第3段:输入框")
window.geometry("400x300")

# 输入框
entry = tk.Entry(window, font=("微软雅黑", 14), width=20)
entry.pack(pady=20)
entry.insert(0, "请输入名字")         # 设置默认提示文字

# 标签:显示结果
label = tk.Label(window, text="", font=("微软雅黑", 14))
label.pack(pady=10)

# 按钮:获取输入并显示
def greet():
    name = entry.get()                # 获取输入框的内容
    if name:
        label.config(text=f"你好,{name}!")
    else:
        label.config(text="请输入名字!")

button = tk.Button(window, text="打招呼", font=("微软雅黑", 14), command=greet)
button.pack(pady=10)

window.mainloop()

____________

# === 第14课:tkinter 图形界面基础 ===

import tkinter as tk

# 4. 列表框:显示多个选项
window = tk.Tk()
window.title("第4段:列表框")
window.geometry("400x400")

# 列表框:显示联系人
listbox = tk.Listbox(window, font=("微软雅黑", 12), width=25, height=10)
listbox.pack(pady=20)

# 添加数据到列表框
contacts = ["张三 13800001111", "李四 13800002222", "王五 13800003333",
            "赵六 13800004444", "火鸟 13518667656"]
for contact in contacts:
    listbox.insert(tk.END, contact)        # tk.END表示插入到末尾

# 标签:显示选中的内容
label = tk.Label(window, text="请选择一个联系人", font=("微软雅黑", 12))
label.pack(pady=10)

# 按钮:获取选中的联系人
def on_select():
    selection = listbox.curselection()      # 获取选中的索引(返回元组)
    if selection:
        index = selection[0]                # 取第一个索引
        name = listbox.get(index)           # 根据索引取内容
        label.config(text=f"你选了:{name}")
    else:
        label.config(text="请先选择一个联系人!")

button = tk.Button(window, text="确认选择", font=("微软雅黑", 12), command=on_select)
button.pack(pady=10)

window.mainloop()
组件/方法 作用
tk.Listbox 列表框,显示多个选项
listbox.insert(tk.END, 内容) 往列表末尾添加一项
listbox.curselection() 获取当前选中的索引
listbox.get(index) 根据索引取内容

____________

# === 第14课:tkinter 图形界面基础 ===

import tkinter as tk

# 5. 布局管理:用 frame 组织界面
window = tk.Tk()
window.title("第5段:布局管理")
window.geometry("400x400")

# 顶部区域
top_frame = tk.Frame(window)
top_frame.pack(fill=tk.X, padx=10, pady=10)

tk.Label(top_frame, text="姓名:", font=("微软雅黑", 12)).pack(side=tk.LEFT)
entry_name = tk.Entry(top_frame, font=("微软雅黑", 12), width=15)
entry_name.pack(side=tk.LEFT, padx=5)

# 中部区域
mid_frame = tk.Frame(window)
mid_frame.pack(fill=tk.BOTH, expand=True, padx=10)

tk.Label(mid_frame, text="电话:", font=("微软雅黑", 12)).pack(side=tk.LEFT)
entry_phone = tk.Entry(mid_frame, font=("微软雅黑", 12), width=15)
entry_phone.pack(side=tk.LEFT, padx=5)

# 列表框区域
listbox = tk.Listbox(window, font=("微软雅黑", 12), width=35, height=8)
listbox.pack(padx=10, pady=10)

# 底部按钮区域
bottom_frame = tk.Frame(window)
bottom_frame.pack(fill=tk.X, padx=10, pady=10)

def add_contact():
    name = entry_name.get().strip()
    phone = entry_phone.get().strip()
    if name and phone:
        listbox.insert(tk.END, f"{name}  {phone}")
        entry_name.delete(0, tk.END)
        entry_phone.delete(0, tk.END)
    else:
        label_msg.config(text="姓名和电话不能为空!")

def del_contact():
    selection = listbox.curselection()
    if selection:
        listbox.delete(selection[0])
        label_msg.config(text="已删除")
    else:
        label_msg.config(text="请先选择一个联系人")

tk.Button(bottom_frame, text="添加", font=("微软雅黑", 12), command=add_contact).pack(side=tk.LEFT, padx=5)
tk.Button(bottom_frame, text="删除", font=("微软雅黑", 12), command=del_contact).pack(side=tk.LEFT, padx=5)

# 消息提示
label_msg = tk.Label(window, text="", font=("微软雅黑", 11), fg="red")
label_msg.pack()

window.mainloop()

 

概念 作用
tk.Frame 容器,把多个组件归到一组
side=tk.LEFT 在 Frame 内从左往右排列
fill=tk.X 水平填满
entry.delete(0, tk.END) 清空输入框
listbox.delete(index) 删除列表中指定项
fg="red" 字体颜色设为红色

__________________

tkinter 核心概念速查:

组件 作用
tk.Tk() 创建窗口
tk.Label 显示文字
tk.Button 按钮
tk.Entry 输入框
tk.Listbox 列表框
tk.Frame 容器分组
关键操作 代码
显示窗口 window.mainloop()
组件放入窗口 .pack()
修改属性 .config(text="新文字")
获取输入框内容 entry.get()
清空输入框 entry.delete(0, tk.END)
绑定事件 widget.bind("<Return>", 函数)

__________________

# === 第14课:tkinter 图形界面基础 ===

import tkinter as tk
from tkinter import messagebox

# 6. 消息对话框和菜单
window = tk.Tk()
window.title("第6段:对话框和菜单")
window.geometry("400x300")

# 菜单栏
menubar = tk.Menu(window)

# 菜单1:文件
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label="新建", command=lambda: messagebox.showinfo("提示", "新建成功!"))
file_menu.add_command(label="保存", command=lambda: messagebox.showinfo("提示", "保存成功!"))
file_menu.add_separator()                              # 分隔线
file_menu.add_command(label="退出", command=window.quit)
menubar.add_cascade(label="文件", menu=file_menu)

# 菜单2:帮助
help_menu = tk.Menu(menubar, tearoff=0)
help_menu.add_command(label="关于", command=lambda: messagebox.showinfo("关于", "通讯录 v1.0\n作者:火鸟"))
menubar.add_cascade(label="帮助", menu=help_menu)

window.config(menu=menubar)

# 按钮:演示不同类型的对话框
def show_info():
    messagebox.showinfo("提示", "这是一条普通提示")

def show_warning():
    messagebox.showwarning("警告", "数据可能丢失!")

def show_error():
    messagebox.showerror("错误", "操作失败!")

def ask_question():
    result = messagebox.askyesno("确认", "确定要删除吗?")
    if result:
        label.config(text="你选了:是")
    else:
        label.config(text="你选了:否")

tk.Button(window, text="普通提示", font=("微软雅黑", 12), command=show_info).pack(pady=5)
tk.Button(window, text="警告提示", font=("微软雅黑", 12), command=show_warning).pack(pady=5)
tk.Button(window, text="错误提示", font=("微软雅黑", 12), command=show_error).pack(pady=5)
tk.Button(window, text="确认对话框", font=("微软雅黑", 12), command=ask_question).pack(pady=5)

label = tk.Label(window, text="", font=("微软雅黑", 12))
label.pack(pady=10)

window.mainloop()
组件/方法 作用
messagebox.showinfo() 普通提示框
messagebox.showwarning() 警告提示框
messagebox.showerror() 错误提示框
messagebox.askyesno() 是/否确认框,返回 True/False
tk.Menu 菜单栏
add_command(label=, command=) 添加菜单项
add_separator() 菜单分隔线
add_cascade(label=, menu=) 添加下拉菜单
lambda: ... 匿名函数,简单操作不需要单独定义函数

__________________

未经允许不得转载:百花谷博客 » 跟着AI学Python 第14课:tkinter 图形界面基础

评论

9+4=

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏