##################################################
目录
活动简介
初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!
直接上代码 —— Python 3 第一个 Tk 桌面窗口程序
关于 Python 窗口
关于 Tk 接口
Tk 编程抽象理解
绑定 tkinter 标签 文本/图片 和变量
文本控件 "Hello, World!" 窗口版
Tk 中的图像控件
面向对象搭配 Tk 控件进行 GUI 编程
示例如何在面向对象中进行 GUI 编程
##################################################
活动简介
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰;一个人摸索学习很难坚持,想组团高效学习;想写博客但无从下手,急需写作干货注入能量;热爱写作,愿意让自己成为更好的人…
初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!
——————————
直接上代码 —— Python 3 第一个 Tk 桌面窗口程序
Python 第一个窗口程序手把手教:
Python 3 创建自己的窗口 需要先将 tkinter 导入
然后通过 Tk() 方法建立一个根窗口 同时设置窗口样式
最后进入等待与处理窗口事件 让窗口一直显示
先将 tkinter 导入:
from tkinter import * # 导入 tk 模块
创建根窗口
通过 Tk() 方法建立一个根窗口 同时设置窗口样式:
window_1 = Tk() # 创建一个窗口对象
window_1.title ( "我的第一个窗口" ) # 通过该方法设置该窗口对象标题
window_1.geometry ( "520x521" ) # 窗口大小 * 是小写的 X 字母
window_1.configure ( bg = "purple" ) # 窗口的背景颜色
window_1.maxsize ( 521, 1314 ) # 设置窗口的最大尺寸
运行窗口
进入等待与处理窗口事件 让窗口一直显示:
window_1.mainloop() # 根窗口循环显示
VSCode demo 窗口默认 520x521 尺寸:
窗口可以放大至 521, 1314 尺寸:
我们的第一个 Python Tk 窗口:
——————————
关于 Python 窗口
学习了 Python 编程语言之后可以做许多有趣的事情
例如可以使用 Python 设计一个窗口
Python 窗口是一个完全交互式的 Python 解释程序或者说界面
允许在 ArcGIS for Desktop 应用程序内执行地理处理工具和 Python 功能
在 ArcGIS 中该窗口是直接访问 Python 脚本函数的最佳位置
创建更为复杂的独立 Python 脚本或 Python 脚本工具时
可以直接利用在 Python 窗口中学到的技巧
Python 窗口之所以能成为运行和实验 Python 命令和语法的重要工具要得益于其几大主要特征:
所有 Python 函数均可以通过 Python 窗口显示
可输入并执行包含多个处理工具或处理器方法的多行命令
可重新调用编辑和重新执行已输入并执行的工具或函数
可从现有 Python 文件中加载 Python 命令或代码块
可将 Python 命令或代码块保存至 Python 文件或文本文件中以便日后重新加载或在不同的环境中使用
还能自动完成功能让填写处理工具参数的工作较使用工具对话框更方便快捷
——————————
关于 Tk 接口
对于有 GUI 编程经验的人来说 Python 的 Tkinter 界面库是非常简单的
Python 的 GUI 库非常多 选择 Tkinter 一是最为简单 二是自带库不需下载安装随时使用
三则是从需求出发 Python 作为一种脚本语言 一种胶水语言 一般不会用她来开发复杂的桌面应用
Python 本身并不具备这方面的优势 所以使用 Python 可以把她作为一个灵活的工具 而不是作为主要开发语言
那么在工作中 需要制作一个小工具 肯定是需要有界面的 不仅自己用 也能分享别人使用
在这种需求下 Tkinter 是足够胜任的!
Tkinter 是什么:
Tkinter 是使用 Python 进行窗口视窗设计的模块
Tkinter 模块/Tk 接口 是 Python 的标准 Tk GUI 工具包的接口
作为 Python 特定的 GUI 界面 是一个图像的窗口
tkinter 是 Python 自带的可以编辑的 GUI 界面
我们可以用 GUI 实现很多直观的功能
比如想开发一个计算器
如果只是一个程序输入输出窗口的话是没用用户体验的
所以开发一个图像化的小窗口就是必要的!
%%%%%
Tk 编程抽象理解
对于 Tkinter 编程 可以用两个比喻来理解
第一个 作画:
我们都见过学生写生的场景
先支一个画架 相应的 对应到 tkinter 编程 那么我们的显示器就是支起来的画架
放上画板 根窗体就是画板 在 tkinter 中则是 Toplevel
蒙上画布 画布就是 tkinter 中的容器 Frame 画板上可以放很多张画布 Convas 而 tkinter 中的容器中也可以放很多个容器
构思内容 用铅笔画草图 组织结构和比例 调色板调色 绘画中的构图布局则是 tkinter 中的布局管理器 几何管理器
最后画笔勾勒 绘画的内容就是 tkinter 中的一个个小组件 一幅画由许多元素构成 而我们的 GUI 界面就是一个个组件拼装起来的 她们就是 widget
第二个 我们小时候都玩过积木 只要发挥创意 相同的积木可以堆出各种造型
tkinter 的组件也可以看做一个个积木
形状或许不同 其本质都是一样的 就是一个积木
不管她长什么样子始终就是积木!
所以这些小组件都有许多共性
——————————
绑定 tkinter 标签 文本/图片 和变量
%%%%%
文本控件 "Hello, World!" 窗口版
VSCode code:
import tkinter as tk # 换一种方式导入 tk 模块
window_1 = tk.Tk() # 新方式创建窗口
window_1_text = tk.Label (
# 示例文本控件 "Hello, World!"
window_1, # 为 window_1_text 添加组件
text = "Hello, World!", # text 文本内容
bg = "white", fg = "black", # bg 背景色 fg 前景色
font = ( "微软雅黑 14 bold" ), # 字体 字体大小 字体样式
bd = 4, # 边界宽度
relief = "groove", # 边框样式
width = 52, # 像素宽
height = 25, # 像素高
anchor = "center", # 该文本控件相对与窗口位置居中
)
window_1_text.pack() # 放置文本组件的位置默认为窗口顶部
window_1.mainloop() # 窗口事件循环
VSCode demo:
可以放大至全屏:
%%%%%
Tk 中的图像控件
首先在工作目录放置一个 png 图片:
注意 Python 内置支持 png 和 gif 如果需要 jpg 可能需要安装其她模块
然后编写代码 VSCode code:
import tkinter as tk # 导入 tk 模块
window_1 = tk.Tk() # 创建窗口
img = tk.PhotoImage ( file = "E:/PY/118木兰.png" ) # 图片变量 注意是 / 而不是 \ !!!不然路径识别不出来
window_1_image = tk.Label ( window_1, image = img ) # 绑定图像控件
window_1_image.pack() # 放置位置为窗口顶部
window_1.mainloop() # 窗口事件循环
执行结果 VSCode demo:
放大之后:
——————————
面向对象搭配 Tk 控件进行 GUI 编程
%%%%%
示例如何在面向对象中进行 GUI 编程
还是上次的图片示例程序 不过面向对象编程中变得高大上 VScode code:
import tkinter # 导入 tk 模块
class Gui():
# Gui 类
def __init__ ( self ):
# 魔术方法
self.window_1 = tkinter.Tk() # 创建实例窗口对象
self.window_1.title ( "第一个图片" ) # 图片标题
self.window_1.geometry ( "800x600" ) # 图片大小
photo = tkinter.PhotoImage ( file = "E:/PY/118木兰.png" ) # 图片位置变量
window_1_image = tkinter.Label ( self.window_1, image = photo ) # 绑定图像控件
window_1_image.pack() # 放置位置为窗口顶部
self.window_1.mainloop() # 窗口事件循环
gui = Gui() # 实例化 Gui 类的 gui 对象自动调用 __init__ 函数
VSCode demo:
放大之后: