济南集团网站建设价格/免费域名
✨✨ 欢迎大家来到景天科技苑✨✨
🎈🎈 养成好习惯,先赞后看哦~🎈🎈
🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,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 库
-
- Tkinter
tkinter(Tk interface)是 Python 的标准 GUI 库,支持跨平台的 GUI 程序开发。tkinter
适合小型的 GUI 程序编写,也特别适合初学者学习 GUI 编程。本章以 tkinter 为核心进行讲解。
- Tkinter
-
- wxPython
wxPython 是比较流行的 GUI 库,适合大型应用程序开发,功能强于 tkinter,整体设计框架类似于 MFC(Microsoft Foundation Classes 微软基础类库)。
- wxPython
-
- PyQT
Qt 是一种开源的 GUI 库,适合大型 GUI 程序开发,PyQT 是 Qt 工具包标准的 Python 实现。我们也可以使用 Qt Desginer 界面设计器快速开发 GUI 应用程序。
- PyQT
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模块初探
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

discuz点微同城源码34.7+全套插件+小程序前端
discuz点微同城源码34.7全套插件小程序前后端 模板挺好看的 带全套插件 自己耐心点配置一下插件 可以H5可以小程序...

ActiveMQ 介绍、下载、安装和控制台
ActiveMQ 介绍 Apache ActiveMQ 是一款非常成熟且功能全面的开源消息中间件,由Apache软件基金会维护。它遵循 Java Message Service (JMS) 规范,这意味着它提供了一组标准的 API,允许 Java 应用程序以一种标准化的方式发送和接收消息。 以下…...

MacOS M系列芯片一键配置多个不同版本的JDK
第一步:下载JDK。 官网下载地址:Java Archive | Oracle 选择自己想要下载的版本,一般来说下载一个jdk8和一个jdk11就够用了。 M系列芯片选择这两个,第一个是压缩包,第二个是dmg可以安装的。 第二步:编辑…...

源码文章上传无忧,论坛小程序支持
前言 在数字化时代,知识的分享与传播显得愈发重要。为了满足广大创作者和求知者的需求,我们推出了全新的论坛小程序,不仅支持文章、源码、链接等多样化内容的上传,还实现了付费观看功能,为创作者们提供了一个展示才华…...

Docker面试整理-如何优化Docker容器的性能?
优化Docker容器的性能可以从多个方面入手,以下是一些建议: 选择合适的基础镜像:使用轻量级的基础镜像,如基于Alpine Linux的镜像,可以减少镜像的大小和启动时间。避免使用过于庞大的操作系统镜像。优化Dockerfile:减少Dockerfile中的不必要指令和层,以最小化镜像的大小。…...

list(二)和_stack_queue
嗨喽大家好,时隔许久阿鑫又给大家带来了新的博客,list的模拟实现(二)以及_stack_queue,下面让我们开始今天的学习吧! list(二)和_stack_queue 1.list的构造函数 2.设计模式之适配器和迭代器 3.新容器de…...

查询SQL02:寻找用户推荐人
问题描述 找出那些 没有被 id 2 的客户 推荐 的客户的姓名。 以 任意顺序 返回结果表。 结果格式如下所示。 题目分析: 这题主要是要看这null值会不会用,如果说Java玩多了,你去写SQL时就会有问题。在SQL中判断是不是null值用的是is null或…...

2、Tomcat 线程模型详解
2、Tomcat 线程模型详解 Tomcat I/O模型详解Linux I/O模型详解I/O要解决什么问题Linux的I/O模型分类 Tomcat支持的 I/O 模型Tomcat I/O 模型如何选型 网络编程模型Reactor线程模型单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 Tomcat NIO实现Tomcat 异步IO实现 Tomc…...

对硬盘的设想:纸存、执行存
固态硬盘出现后,发现它的擦写次数受限,越是便宜的固态硬盘,擦写次数越少。于是,有了“纸存”的设想,即硬盘上的单元只能改写一次,就像拿钢笔在纸上写字一样。这时,文件系统、数据库该怎么设计&a…...

最新付会进群多群同时变现社群系统V3.5.3版本 详细教程+源码下载
市面1888最新付费进群多群同时变现系统V3.5.3版本 详细教程源码下载介绍: 续男粉变现,相亲群变现后 演化出来的最新多群同时变现系统 可同时进行40个群同时变现 可设置地域群,相亲,男粉变现等多种群 购买后包括详细的 域名服…...

python tk实现标签切换页面
import tkinter as tk from tkinter import ttk# 初始化主窗口 root tk.Tk() root.title("标签页示例")# 设置窗口大小 root.geometry("400x300")# 创建 Notebook 小部件 notebook ttk.Notebook(root) notebook.pack(expandTrue, fill"both")#…...

引擎:UI
一、控件介绍 Button 按钮 创建一个按钮 按钮禁用 精灵模式 颜色模式 缩放模式 绑定点击事件 EditBox 输入框 Layout 布局 支持水平排列、垂直排列、背包排列 PageView 页面视图 ProgressBar 进度条 RichText 富文本 绑定点击事件 事件可以被其它标签包裹 图文混排 Scroll…...

Redis常见异常及优化方案
Redis常见异常及优化方案 Redis集群(redis-cluster)中的三主三从或者哨兵(sentinel)模式配置是一种常见的高可用架构,用于解决单点故障和提高数据可靠性。然而,即使在这样的配置下,仍然可能会遇…...

YOLOV5 图像分割:利用yolov5进行图像分割
1、介绍 本章将介绍yolov5的分割部分,其他的yolov5分类、检测项目参考之前的博文 分类:YOLOV5 分类:利用yolov5进行图像分类_yolov5 图像分类-CSDN博客 检测:YOLOV5 初体验:简单猫和老鼠数据集模型训练-CSDN博客 yolov5的分割和常规的分割项目有所区别,这里分割的结果…...

如何在Linux中使用Screen管理后台进程
如何在Linux中使用Screen管理后台进程 在Linux系统中,screen是一个非常有用的工具,它允许用户在一个终端窗口中创建多个虚拟终端,并且可以在这些终端之间切换,甚至可以在断开连接后重新连接到这些会话。这对于需要在后台运行长时…...

互联网轻量级框架整合之SpringMVC初始化及各组件工作原理
Spring MVC的初始化和流程 MVC理念的发展 SpringMVC是Spring提供给Web应用领域的框架设计,MVC分别是Model-View-Controller的缩写,它是一个设计理念,不仅仅存在于Java中,各类语言及开发均可用,其运转流程和各组件的应…...

【Android面试八股文】finally中的代码一定会执行吗?try里有return,finally还执行么?
文章目录 finally中的代码一定会执行吗?try里有return,finally还执行么?这道题想考察什么?考察的知识点考生应该如何回答验证特殊情况线程是守护线程遇到System.exit()finally中的代码一定会执行吗?try里有return,finally还执行么? 这道题想考察什么? 对Java语言的深…...

微服务第一轮
课程文档 目录 一、业务流程 1、登录 Controller中的接口: Service中的实现impl: Service中的实现impl所继承的接口IService(各种方法): VO: DTO: 2、搜索商品 Controller中的接口&a…...

Linux 命令 FIO:深入理解磁盘性能测试工具
Linux 命令 FIO:深入理解磁盘性能测试工具 在 Linux 系统中,磁盘 I/O 性能对于系统的整体性能至关重要。为了准确、快速地评估磁盘性能,我们需要一个强大的工具来模拟各种磁盘读写场景。FIO(Flexible I/O Tester)就是…...

《精通ChatGPT:从入门到大师的Prompt指南》大纲目录
第一部分:入门指南 第1章:认识ChatGPT 1.1 ChatGPT是什么 1.2 ChatGPT的应用领域 1.3 为什么需要了解Prompt 第2章:Prompt的基本概念 2.1 什么是Prompt 2.2 好Prompt的特征 2.3 常见的Prompt类型 第二部分:Prompt设计技巧 第…...

Go_context包
是什么?为什么? context时goroutine之间传递上下文消息,包括信号取消,储存数据。 为什么? Go通常写后端服务,启动一个HTTP请求会启动多个goroutine,可以共享token数据。 或者处理时间长,通过停止信号关联…...

Mysql基础进阶速成版
一:sql语句: 1.创建一张表:写成公式:创建函数(create table)表名(配置字段)。配置字段公式:字段名称字段类型,常用的类型有:整数类型int(8),int(16),int(32).....,小数类型float(8),float(16).…...

Tomcat安装与配置要点和难点以及常见报错和解决方案
Tomcat 的安装及配置教程如下,将按照清晰的步骤进行说明: 一、安装前的准备 安装 JDK:Tomcat 是基于 Java 的 Web 服务器,因此需要先安装 JDK(Java Development Kit)。 你可以根据自己的操作系统选择适合的 JDK 版本,并确保它已正确安装和配置。 二、下载 Tomcat 访问 A…...

【Oracle】Oracle导入导出dmp文件
文章目录 前言一、什么是dmp?二、imp/impdp、exp/expdp对比及示例1.区别2.imp/impdp对比及示例a. impb. impbp 3.exp/expdp对比及示例a. expb.expdp 3.其他事项 三、执行导入导出前置条件1.创建角色并授权2.创建目录映射 前言 在工作中,经常会遇到需要备…...

渗透测试模拟实战-tomexam网络考试系统
渗透测试,也称为“pentest”或“道德黑客”,是一种模拟攻击的网络安全评估方法,旨在识别和利用系统中的安全漏洞。这种测试通常由专业的安全专家执行,他们使用各种技术和工具来尝试突破系统的防御,如网络、应用程序、主…...

“神经网络之父”和“深度学习鼻祖”Geoffrey Hinton
“神经网络之父”和“深度学习鼻祖”Geoffrey Hinton在神经网络领域数十年如一日的研究,对深度学习的推动和贡献显著。 一、早期贡献与突破 反向传播算法的引入:Hinton是将反向传播(Backpropagation)算法引入多层神经网络训练的…...

[消息队列 Kafka] Kafka 架构组件及其特性(一)
工作中的消息队列用的是Kafka,一直没有系统的了解,这边集中整理一下。 目录 Kafka主要组件有十个部分。 1.Broker(服务器) 2.Record(消息) 3.Producer(生产者) 4.Consumer&…...

【Flutter 面试题】 JIT 与 AOT分别是什么?
【Flutter 面试题】 JIT 与 AOT分别是什么? 文章目录 写在前面口述回答写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,你好! 😊 Flutter 面试宝典(…...

QT获取最小化,最大化,关闭窗口事件
QT获取最小化,最大化,关闭窗口事件 主程序头文件: 实现: changeEvent,状态改变事件 closeEvent触发点击窗口关闭按钮事件 其代码它参考: /*重写该函数*/ void MainWindow::changeEvent(QEvent *event) {…...