尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Python学习日记10
图形用户界面GUI12.1 GUI 概述12.1.1 什么是 GUIGUIGraphical User Interface图形用户界面是程序与用户交互的一种方式通过窗口、按钮、文本框、菜单等可视化控件来接收用户输入和显示输出相比命令行界面CLI更直观、更友好。12.1.2 Python 的 GUI 工具包本章介绍Tkinter因为它是 Python 自带的开箱即用。12.2 第一个 Tkinter 程序12.2.1 创建主窗口import tkinter as tk # 创建主窗口 root tk.Tk() root.title(我的第一个GUI程序) # 进入主事件循环 root.mainloop()代码解读tk.Tk()创建主窗口对象title()设置窗口标题mainloop()进入事件循环等待用户操作点击、按键等12.2.2 添加控件import tkinter as tk root tk.Tk() root.title(按钮示例) # 创建按钮控件 btn tk.Button() btn[text] 点击我 # 设置按钮文本 btn.pack() # 布局——将按钮放入窗口 root.mainloop()代码解读Button()创建按钮控件pack()布局管理器将控件放入窗口控件的属性可以像字典一样访问和修改12.2.3 添加事件响应import tkinter as tk def on_click(): print(按钮被点击了) root tk.Tk() root.title(事件响应示例) btn tk.Button() btn[text] 点击我 btn[command] on_click # 绑定点击事件 btn.pack() root.mainloop()代码解读command属性绑定按钮被点击时调用的函数点击按钮时on_click()函数自动执行12.2.4 使用构造函数配置import tkinter as tk def on_click(): print(按钮被点击了) root tk.Tk() root.title(简洁写法) # 在创建时直接配置属性 btn tk.Button(text点击我, commandon_click) btn.pack() root.mainloop()12.2.5 使用config()方法import tkinter as tk root tk.Tk() btn tk.Button() btn.config(text点击我, commandlambda: print(Clicked!)) btn.pack() root.mainloop()12.3 常用控件12.3.1 标签Labelimport tkinter as tk root tk.Tk() root.title(标签示例) # 创建文本标签 label tk.Label(text这是一个标签, font(Arial, 16), fgblue) label.pack() root.mainloop()12.3.2 文本框EntryEntry用于输入单行文本。import tkinter as tk def show_text(): print(entry.get()) # 获取输入框内容 root tk.Tk() root.title(输入框示例) entry tk.Entry() entry.pack() btn tk.Button(text提交, commandshow_text) btn.pack() root.mainloop()12.3.3 文本区域Text / ScrolledTextText用于多行文本输入ScrolledText自带滚动条。import tkinter as tk from tkinter.scrolledtext import ScrolledText root tk.Tk() root.title(文本区域示例) # 创建可滚动文本区域 text_area ScrolledText(height10, width40) text_area.pack() def get_text(): content text_area.get(1.0, tk.END) # 获取全部文本 print(content) btn tk.Button(text获取内容, commandget_text) btn.pack() root.mainloop()get()方法的参数1.0第1行第0列文件开头tk.END文本末尾tk.INSERT当前光标位置12.3.4 按钮Buttonimport tkinter as tk root tk.Tk() # 创建带文字和颜色的按钮 btn1 tk.Button(text普通按钮, bglightblue) btn1.pack() # 创建带图标的按钮需要图像文件 # img tk.PhotoImage(fileicon.png) # btn2 tk.Button(text带图标, imageimg, compoundleft) # btn2.pack() root.mainloop()12.4 布局管理器布局管理器决定控件在窗口中的位置和大小。12.4.1pack()—— 堆叠布局pack()将控件依次堆叠在窗口中。import tkinter as tk root tk.Tk() # 默认从上到下排列 tk.Button(text按钮1).pack() tk.Button(text按钮2).pack() tk.Button(text按钮3).pack() root.mainloop()常用参数# 水平排列 tk.Button(text左, bgred).pack(sidetk.LEFT, padx5) tk.Button(text中, bggreen).pack(sidetk.LEFT, padx5) tk.Button(text右, bgblue).pack(sidetk.LEFT, padx5) # 填充和扩展 tk.Button(text填充).pack(filltk.X, expandTrue)12.4.2grid()—— 网格布局grid()将控件放在表格网格中适合复杂布局。import tkinter as tk root tk.Tk() # 创建标签和输入框对 tk.Label(text用户名).grid(row0, column0, stickye) tk.Entry().grid(row0, column1) tk.Label(text密码).grid(row1, column0, stickye) tk.Entry().grid(row1, column1) tk.Button(text登录).grid(row2, column0, columnspan2) root.mainloop()常用参数12.4.3place()—— 绝对定位place()直接指定控件的精确位置不推荐在不同分辨率下显示效果差。import tkinter as tk root tk.Tk() root.geometry(300x200) tk.Button(text精确位置).place(x100, y80, width100, height30) root.mainloop()12.5 事件处理12.5.1 使用bind()绑定事件除了command属性外Tkinter 提供bind()方法绑定更广泛的事件。import tkinter as tk def on_click(event): print(f鼠标点击位置({event.x}, {event.y})) root tk.Tk() root.geometry(400x300) root.bind(Button-1, on_click) # 左键点击 root.mainloop()12.5.2 常见事件12.5.3 事件对象属性def on_event(event): print(f控件{event.widget}) print(fX坐标{event.x}) print(fY坐标{event.y}) print(f按键{event.keysym}) print(f字符{event.char})12.5.4 键盘事件示例import tkinter as tk root tk.Tk() def on_key(event): if event.keysym Escape: root.quit() else: print(f按下了{event.keysym}) root.bind(Key, on_key) root.focus_set() # 让窗口获得焦点 root.mainloop()12.6 综合示例简单的文本编辑器下面是一个包含打开文件、保存文件、编辑文本功能的简单 GUI 文本编辑器。import tkinter as tk from tkinter.scrolledtext import ScrolledText from tkinter import messagebox class SimpleEditor: 简单的文本编辑器 def __init__(self): self.root tk.Tk() self.root.title(简易文本编辑器) # 文件名输入框 self.filename tk.Entry(self.root) self.filename.pack(sidetk.LEFT, expandTrue, filltk.X, padx5, pady5) # 工具栏 toolbar tk.Frame(self.root) toolbar.pack(sidetk.TOP, filltk.X) tk.Button(toolbar, text打开, commandself.open_file).pack(sidetk.LEFT, padx2) tk.Button(toolbar, text保存, commandself.save_file).pack(sidetk.LEFT, padx2) # 文本编辑区域 self.text_area ScrolledText(self.root, height20) self.text_area.pack(expandTrue, filltk.BOTH, padx5, pady5) self.root.mainloop() def open_file(self): 打开文件并显示内容 filename self.filename.get().strip() if not filename: messagebox.showwarning(警告, 请输入文件名) return try: with open(filename, r, encodingutf-8) as f: content f.read() self.text_area.delete(1.0, tk.END) # 清空 self.text_area.insert(tk.INSERT, content) # 插入内容 except FileNotFoundError: messagebox.showerror(错误, f文件 {filename} 不存在) except Exception as e: messagebox.showerror(错误, f读取文件失败{e}) def save_file(self): 保存当前内容到文件 filename self.filename.get().strip() if not filename: messagebox.showwarning(警告, 请输入文件名) return try: content self.text_area.get(1.0, tk.END) with open(filename, w, encodingutf-8) as f: f.write(content) messagebox.showinfo(成功, 文件已保存) except Exception as e: messagebox.showerror(错误, f保存文件失败{e}) if __name__ __main__: SimpleEditor()运行效果顶部输入框输入文件名点击打开加载文件内容到文本区域编辑后点击保存写入文件12.7 对话框12.7.1 消息框from tkinter import messagebox # 信息提示 messagebox.showinfo(标题, 这是一条信息) # 警告 messagebox.showwarning(标题, 这是一条警告) # 错误 messagebox.showerror(标题, 发生错误) # 询问返回 yes 或 no result messagebox.askyesno(确认, 确定要删除吗) if result: print(用户确认) else: print(用户取消) # 选择返回 ok 或 cancel result messagebox.askokcancel(确认, 确定要继续吗)12.7.2 文件选择对话框from tkinter import filedialog # 选择文件打开 filename filedialog.askopenfilename( title选择文件, filetypes[(文本文件, *.txt), (所有文件, *.*)] ) # 选择文件保存 filename filedialog.asksaveasfilename( title保存文件, defaultextension.txt, filetypes[(文本文件, *.txt), (所有文件, *.*)] ) # 选择目录 dirname filedialog.askdirectory(title选择目录)12.7.3 颜色选择对话框from tkinter import colorchooser color colorchooser.askcolor(title选择颜色) # 返回 ((r, g, b), #rrggbb) 或 None if color: print(color[1]) # #ff0000
RELATED

相关推荐

AI会议助手的几个关键技术指标:准确率、语言覆盖和测试方法怎么看?

AI会议助手的几个关键技术指标:准确率、语言覆盖和测试方法怎么看?

现在很多AI会议助手都会提供实时转写、会议摘要、发言人区分、多语言识别等功能。 从产品界面来看,这些功能之间的差异似乎越来越小。但如果从技术实现角度拆开来看,影响实际效果的因素依然很多。 其中比较基础的几个指标包括语音识别准确率、语言与方…

📅 2026/10/26 6:09:27
人工智能 16 大算法及实施手册

人工智能 16 大算法及实施手册

一、16 大 AI 算法总览线性回归(Linear Regression)逻辑回归(Logistic Regression)朴素贝叶斯(Naive Bayes)K 近邻 KNN支持向量机 SVM决策树 Decision Tree随机森林 Random ForestXGBoost(梯度提…

📅 2026/10/26 9:15:02
2026年MBTI测试平台推荐:7个网站按需求选

2026年MBTI测试平台推荐:7个网站按需求选

网上挂着MBTI测试牌子的网站成百上千,真正靠谱的就那么几个。我按题量、信效度、本土化、免费边界这几个硬指标,把目前还能用的MBTI测试网站筛了一遍,结论先放在这儿: 第一次测、想要零门槛中文体验,用十六型MBTI&…

📅 2026/10/26 8:20:21
MORE NEWS

更多资讯

📰

Pandas缺失值处理:类型识别、语义归因与工程化实践

1. 为什么Pandas的缺失值处理不是“填个数”那么简单很多人第一次在数据分析中遇到NaN,第一反应是赶紧用.fillna(0)或者.fillna(methodffill)糊弄过去——我试过,也这么干过。但后来在某次模拟项目X的用户行为分析中翻了大跟头:明明清洗后的数…

📰

YOLO系列全解析:从算法原理到部署实战

YOLO 从 2015 年首次亮相到现在,版本迭代速度之快、生态覆盖之广,在目标检测领域几乎找不到第二家。很多刚接触的同学问我“现在该学哪个版本”,说实话这个问题没法一句话回答——不同版本的定位、硬件要求、任务支持都不一样。这篇文章把 YO…

📰

AI模型与算法区别及部署实践指南

1. 模型与算法的本质区别 第一次部署AI系统时,我把训练好的模型文件直接扔给工程团队,结果被反问"算法逻辑文档在哪"。当时才意识到,很多开发者其实分不清模型和算法的区别。这就像把菜谱和做好的预制菜混为一谈——前者是烹饪方法…

📰

DeepSeek-V4编程能力解析:从多语言协同到硬件感知代码生成

1. DeepSeek-V4编程能力深度解析当同行还在比拼推理任务的吞吐量和延迟时,DeepSeek-V4已经悄然开辟了新战场。这个春节档最让我惊讶的不是各类大模型的推理性能报告,而是社区里突然涌现的DeepSeek-V4编程实战案例。从PLC梯形图生成到CUDA核函数优化&…

📰

ComfyUI安装部署全指南:四层架构避坑实战

1. 为什么现在连装个ComfyUI都要反复折腾?——这不是软件安装,是工作流基建 最近在几个技术交流群里,几乎每天都有人发截图:“刚装完启动报错”“节点全红”“显存占用100%但啥都不干”。我点开一看,八成是卡在了最基础…

📰

深度学习模型文件读写与格式转换实战指南

1. 模型文件读写的重要性与场景 在深度学习项目开发中,模型文件的读写操作就像建筑师的蓝图管理一样关键。想象一下,你花了三天三夜训练出一个准确率95%的图像分类模型,突然断电导致模型参数全部丢失——这种灾难性场景正是模型文件读写要解决…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬