【python进阶】python图形化编程之美--tkinter模块初探

2024-06-07 09:44

本文主要是介绍【python进阶】python图形化编程之美--tkinter模块初探,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:python图形化GUI编程tkinter精讲
景天的主页:景天科技苑

文章目录

  • 1.GUI 图形用户界面编程
  • 2.python中常用的 GUI 库
    • 1.tkinter 模块
    • 2.GUI编写程序步骤
      • 1. 创建应用程序主窗口对象(也称:根窗口)
      • 2. 在主窗口中,添加各种可视化组件,比如:按钮(Button)、文本框(Label)等。
      • 3. 通过几何布局管理器,管理组件的大小和位置
      • 4. 事件处理
      • 5.完整代码

1.GUI 图形用户界面编程

我们之前实现的都是基于控制台的程序,程序和用户的交互通过控制台来完成。
本章,我们将学习 GUI(Graphics User Interface),即图形用户界面编程,我们
可以通过 python 提供的丰富的组件,快速的实现使用图形界面和用户交互。
GUI 编程类似于“搭积木”,将一个个组件(Widget)放到窗口中。如下是 windows 中的
画图软件,就是一个典型的 GUI 程序:
在这里插入图片描述

上面的各种按钮、菜单、编辑区域等都是一个个组件,它们都放置到窗口中,并通过增
加“对事件的处理”成为一个完整的程序。

2.python中常用的 GUI 库

    1. Tkinter
      tkinter(Tk interface)是 Python 的标准 GUI 库,支持跨平台的 GUI 程序开发。tkinter
      适合小型的 GUI 程序编写,也特别适合初学者学习 GUI 编程。本章以 tkinter 为核心进行讲解。
    1. wxPython
      wxPython 是比较流行的 GUI 库,适合大型应用程序开发,功能强于 tkinter,整体设计框架类似于 MFC(Microsoft Foundation Classes 微软基础类库)。
    1. PyQT
      Qt 是一种开源的 GUI 库,适合大型 GUI 程序开发,PyQT 是 Qt 工具包标准的 Python 实现。我们也可以使用 Qt Desginer 界面设计器快速开发 GUI 应用程序。

1.tkinter 模块

本章中,涉及大量的 API 讲解。学习 API 最好的来源就是官方提供的文档:tkinter 官
方网址:https://docs.python.org/3.11/library/tk.html
在这里插入图片描述

2.GUI编写程序步骤

GUI 编程的核心步骤和第一个 GUI 程序
基于 tkinter 模块创建 GUI 程序包含如下 4 个核心步骤:

1. 创建应用程序主窗口对象(也称:根窗口)

(1) 通过类 Tk 的无参构造函数

from tkinter import *
#创建个窗口
root = Tk()

此时创建窗口,运行后不会出现我们创建的窗口
在这里插入图片描述

此时,需要调用组件的 mainloop 方法,进入事件循环,才会出现窗口

root.mainloop()

此时就会弹出窗口,程序处于阻塞状态。就是个死循环,用来监听用户是否有操作,进入相应的方法执行一些事件
在这里插入图片描述

2. 在主窗口中,添加各种可视化组件,比如:按钮(Button)、文本框(Label)等。

#创建button对象,将窗口作为参数传进去,表示把button放进窗口里
btn01 = Button(root)
btn01["text"] = "点我就送花"

3. 通过几何布局管理器,管理组件的大小和位置

btn01.pack()

此时运行程序,只显示个按钮,点击也没反应
在这里插入图片描述

需要对事件进行处理

4. 事件处理

(1) 通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)

#事件处理
#通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)
#方法里面传一个参数,e表示事件对象
def songhua(e):#显示到窗口上的信息,需要导入模块messageboxmessagebox.showinfo("Message","送你一朵玫瑰花,请你爱上我")print("送你 99 朵玫瑰花")print("e是什么",e)#事件绑定,bind第一个参数 <Button-1>表示鼠标左键单击,第二个参数是事件函数
btn01.bind("<Button-1>",songhua)

此时运行程序,点击按钮,就会在窗口上显示出我们设置的内容
在这里插入图片描述

点击确定,可以看到控制台打印
在这里插入图片描述

5.完整代码

from tkinter import *
from tkinter import messagebox#创建个窗口
root = Tk()#在主窗口中,添加各种可视化组件,比如:按钮(Button)、文本框(Label)等。
#创建button对象,将窗口作为参数传进去,表示把button放进窗口里
btn01 = Button(root)
btn01["text"] = "点我就送花"#通过几何布局管理器,管理组件的大小和位置
btn01.pack()#事件处理
#通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)
#方法里面传一个参数,e表示事件对象
def songhua(e):#显示到窗口上的信息,需要导入模块messageboxmessagebox.showinfo("Message","送你一朵玫瑰花,请你爱上我")print("送你 99 朵玫瑰花")print("e是什么",e)#事件绑定,bind第一个参数 <Button-1>表示鼠标左键单击,第二个参数是事件函数
btn01.bind("<Button-1>",songhua)#需要调用组件的 mainloop 方法,进入事件循环,才会出现窗口
root.mainloop()

这篇关于【python进阶】python图形化编程之美--tkinter模块初探的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038823

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

16.Spring前世今生与Spring编程思想

1.1.课程目标 1、通过对本章内容的学习,可以掌握Spring的基本架构及各子模块之间的依赖关系。 2、 了解Spring的发展历史,启发思维。 3、 对 Spring形成一个整体的认识,为之后的深入学习做铺垫。 4、 通过对本章内容的学习,可以了解Spring版本升级的规律,从而应用到自己的系统升级版本命名。 5、Spring编程思想总结。 1.2.内容定位 Spring使用经验

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

iptables(7)扩展模块state

简介         前面文章我们已经介绍了一些扩展模块,如iprange、string、time、connlimit、limit,还有扩展匹配条件如--tcp-flags、icmp。这篇文章我们介绍state扩展模块  state          在 iptables 的上下文中,--state 选项并不是直接关联于一个扩展模块,而是与 iptables 的 state 匹配机制相关,特

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python

python 喷泉码

因为要完成毕业设计,毕业设计做的是数据分发与传输的东西。在网络中数据容易丢失,所以我用fountain code做所发送数据包的数据恢复。fountain code属于有限域编码的一部分,有很广泛的应用。 我们日常生活中使用的二维码,就用到foutain code做数据恢复。你遮住二维码的四分之一,用手机的相机也照样能识别。你遮住的四分之一就相当于丢失的数据包。 为了实现并理解foutain