天天看点

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

##################################################

目录

活动简介

初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

直接上代码 —— Python 3 第一个 Tk 桌面窗口程序

关于 Python 窗口

关于 Tk 接口

Tk 编程抽象理解

绑定 tkinter 标签 文本/图片 和变量

文本控件 "Hello, World!" 窗口版

Tk 中的图像控件

面向对象搭配 Tk 控件进行 GUI 编程

示例如何在面向对象中进行 GUI 编程

##################################################

活动简介

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰;一个人摸索学习很难坚持,想组团高效学习;想写博客但无从下手,急需写作干货注入能量;热爱写作,愿意让自己成为更好的人…

欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程,或者按照自己的理解发布专栏学习作品!

##################################################

初识 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 尺寸:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

        窗口可以放大至 521, 1314 尺寸:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

        我们的第一个 Python Tk 窗口:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

——————————

关于 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:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

        可以放大至全屏:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!
py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

%%%%%

Tk 中的图像控件

        首先在工作目录放置一个 png 图片:

        注意 Python 内置支持 png 和 gif 如果需要 jpg 可能需要安装其她模块
py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

        然后编写代码 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:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

        放大之后:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

——————————

面向对象搭配 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:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

        放大之后:

py20_(终于第 21 天)初识 Python 3 GUI 编程 tk 窗口之文本图像控件及面向对象 GUI 编程!初识 Python 3 GUI 编程之 tk 窗口及面向对象 GUI 编程!

        巧了 这是第 118 篇博客 绝绝子!