Python -- GUI图形界面编程—GUI编程实例 博主也在持续学习中[ 持续更新中!!! 欢迎白嫖 也求粉啊啊啊~ ]
本文介绍了GUI的图形界面编程(相关视频是哔站上的应该搜这个题目就能找到),文章还是很基础的,反正我是小白从0开始,主要的结构tinkter库、重要组件简介(这个不用死记硬背 用的时候再说)、Label(我一直以为是Lable)、option、Button(后续还会涉及到),其实很多代码部分是重复的,因为框架是固定的,跟着敲两遍就记住了,还是要动手。
以前不知道Python的前端长什么样,现在知道喽~~ 感觉Django也不错,下次可以试试。
还是希望佬们能点个赞吧!!!
目录
1. tinkter库
2. 窗口大小和位置
3. GUI编程整体描述_重要组件汇总
4. GUI程序的景点面向对象写法
5. Label组件_tkinter中图像正确显示全局变量的写法
1. 显示文本
2. 显示图像
3. 自定义样式
4. 锚点和位置
5. 响应事件
实例代码展示:
6. options选项详解--底层源码分析和阅读_可变参数 运算符 重载(复习)
1. 可变参数指的是“可变数量的参数”。分两种情况:
2. 设置option选项
7. Button_anchor(锚点)位置控制
8. Entry_StringVar登录界面设计和功能实现
1. tinkter库
2. 窗口大小和位置
tkinter 主窗口
geometry('wxh+/-x/y')来进行设置窗口的大小和位置
# P1 Tkinter库
# P2 tkinter 主窗口
# geometry('wxh+/-x/y')来进行设置
from tkinter import *
from tkinter import messagebox
root = Tk() # 窗口对象
root.title('我的第一个GUI程序')
root.geometry('500x300+100+200')
# 组件
btn01 = Button(root)
btn01["text"] = "点我就送花"
# 布局管理器
btn01.pack() #
# 定义事件
def songhua(e): # e表示事件对象messagebox.showinfo('Message', '送你一朵小红花')print('爱你99')
# 事件绑定
btn01.bind("<Button-1>", songhua) # <Button-1>表示鼠标左键单击
root.mainloop() # 窗口 调用组件的mainloop()方法,进入事件循环

3. GUI编程整体描述_重要组件汇总

4. GUI程序的景点面向对象写法
# P4 GUI程序的景点面向对象写法
"""测试一个经典的GUI程序写法,使用面向对象的方式"""
from tkinter import *
from tkinter import messagebox
# Frame 是一个组件
class Application(Frame):def __init__(self, master=None):super().__init__(master) # 调用父类Frame的方法self.master = masterself.pack() #布局管理器self.createWidget()
def createWidget(self):"""创建组件"""self.btn01 = Button(self)self.btn01["text"] = '点击送花'self.btn01.pack()self.btn01["command"] = self.songhua
# 创建一个退出按钮self.btn01Quit = Button(self, text="退出", command=root.destroy)self.btn01Quit.pack()
def songhua(self):messagebox.showinfo('送花', '送你一朵小红花')
if __name__ == '__main__':# 创建根窗口对象root = Tk()root.geometry('500x300+100+200')root.title('一个经典的GUI程序类的测试')app = Application(master=root)
root.mainloop() # 事件循环

5. Label组件_tkinter中图像正确显示全局变量的写法
Label(标签)主要用于显示文本信息,也可以显示图像(不可编辑)。
Label的主要标签 : 文心一言
在Tkinter中,虽然通常我们提到的是Label(用于显示文本信息,但Tkinter的Label组件实际上也支持显示图像。要在Tkinter中使用Label显示图像,你通常会使用PhotoImage(对于Tkinter支持的图像格式,如GIF和PPM)或者通过PIL(Python Imaging Library,现在更常用的是Pillow库)来加载和处理更广泛的图像格式(如JPEG、PNG等),然后将这些图像作为Label的image属性来显示。
关于Label组件的常用功能和几个简单介绍:
1. 显示文本
Label组件最基本的功能就是显示文本。你可以通过text参数来指定要显示的文本内容。
from tkinter import Tk, Label
root = Tk()
label = Label(root, text="Hello, Tkinter!")
label.pack()
root.mainloop()
2. 显示图像
为了显示图像,你需要先加载图像,然后将其作为Label的image属性。注意,对于非GIF图像,你可能需要使用Pillow库。
from tkinter import Tk, Label
from PIL import Image, ImageTk
root = Tk()
# 假设你有一个名为'image.png'的图像文件
image = Image.open("image.png")
photo = ImageTk.PhotoImage(image)
label = Label(root, image=photo)
label.image = photo # 保留对图像的引用,防止被垃圾回收
label.pack()
root.mainloop()
3. 自定义样式
Label组件支持多种样式自定义,比如你可以通过fg(前景色,即文本颜色)和bg(背景色)来设置文本和背景的颜色。
label = Label(root, text="Colored Text", fg="blue", bg="yellow")
4. 锚点和位置
你可以通过anchor参数来设置文本或图像在Label中的锚点位置(如左上角、中心、右下角等),以及通过布局管理器(如pack(), grid(), place())来控制Label在窗口中的位置。
label = Label(root, text="Centered Text", anchor="center") label.pack(expand=True) # 使用pack时,expand=True可以让Label扩展以填充整个窗口
5. 响应事件
虽然Label本身不是为交互设计的,但你可以通过将其与事件(如鼠标点击)绑定来创建简单的交互。不过,这通常需要与另一个组件(如Button)结合使用,或者通过自定义的方式来捕捉事件。
def on_click(event):print("Label clicked!")
label = Label(root, text="Click Me")
label.bind("<Button-1>", on_click) # 绑定鼠标左键点击事件
label.pack()
请注意,直接在Label上绑定事件并不是常见的做法,因为它主要是为显示信息而设计的。对于需要用户交互的场景,使用Button或Canvas等组件可能更合适。
实例代码展示:
# P5 Label组件_tkinter中图像正确显示全局变量的写法
from tkinter import *
# from tkinter import messagebox
class Application(Frame):def __init__(self, master=None):super().__init__(master) # 调用父类Frame的方法self.master = masterself.pack() #布局管理器self.createWidget()
def createWidget(self):"""创建组件"""self.label01 = Label(self,text="百战成诗",width=10,height=2,bg="black",fg="white")self.label01.pack()
self.label02 = Label(self, text="百战不衰", width=12, height=2,bg="blue", fg="white",font=('黑体',30))self.label02.pack()# 显示图像global photo #设置为全局变量,如果是局部变量本方法执行完毕后,图像对象会被销毁,窗口不会显示图像photo = PhotoImage(file="img/01.gif")self.label03 = Label(self,image=photo)self.label03.pack()
# 显示多行文本# relief = "groove",边框显示效果 justify = "right" 右对齐(对齐方式)self.label04 = Label(self,text="巴黎奥运会,中国最棒,加油中国健将们",borderwidth=2,relief="groove",justify="right",font=5)self.label04.pack()
if __name__ == '__main__':# 创建根窗口对象root = Tk()root.geometry('800x800+200+200')root.title('测试Label')app = Application(master=root)root.mainloop() # 事件循环

6. options选项详解--底层源码分析和阅读_可变参数 运算符 重载(复习)
1. 可变参数指的是“可变数量的参数”。分两种情况:
-
*param(一个星号),将多个参数收集到一个“元组”对象中。
-
**param(两个星号),将多个参数收集到一个“字典”对象中。

2. 设置option选项

7. Button_anchor(锚点)位置控制

import tkinter as tk
def on_button_click():print("按钮被点击了!")
# 创建主窗口
root = tk.Tk()
root.title("Button 示例")
# 创建一个按钮
# 参数:主窗口, 文本, 命令(点击时调用的函数)
button = tk.Button(root, text="点击我", command=on_button_click)
# 将按钮放置到主窗口中
button.pack(pady=20) # pady参数用于在按钮和窗口边缘之间添加垂直填充
# 启动事件循环
root.mainloop()

8. Entry_StringVar登录界面设计和功能实现
Entry用来接收一行字符串的控件,如果用户输入的文字长度长于 Entry控件的宽度时,文字会自动向后滚动,如果相输入多行文本,需要使用Text控件。
# p8
from tkinter import *
from tkinter import messagebox
# Frame 是一个组件
class Application(Frame):def __init__(self, master=None):super().__init__(master) # 调用父类Frame的方法self.master = masterself.pack() #布局管理器self.createWidget()
def createWidget(self):# 创建登录界面组件self.label01 = Label(self,text='用户名')self.label01.pack()
# StringVar变量绑定到指定的组件。# StringVar变量的值发生变化,组件的值也发生变化# 组件内容发生变化,StringVar变量的值也发生变化# 双向关联的作用???v1 = StringVar() # 数据类型 intVar...self.entry01 = Entry(self,textvariable=v1)self.entry01.pack()v1.set("admain")print(v1.get());print(self.entry01.get())
# 创建密码框self.label02 = Label(self, text='密码')self.label02.pack()v2 = StringVar()self.entry02 = Entry(self, textvariable=v2,show='*')self.entry02.pack()v2.set("admain")print(v2.get());print(self.entry02.get())
Button(self,text="登录",command=self.login).pack()
def login(self):# 定义变量进行接收username = self.entry01.get()password = self.entry02.get()print("去数据库比对用户名和密码")print("用户名:"+username)print(f"密码{password}")
if username == "haha" and password == "110":messagebox.showinfo('郑州大学', '上岸成功!欢迎登录!')else:messagebox.showinfo('郑州大学', '用户名或密码错误,登录失败')
if __name__ == '__main__':# 创建根窗口对象root = Tk()root.geometry('500x300-100-200')app = Application(master=root)root.mainloop() # 事件循环

相关文章:
Python -- GUI图形界面编程—GUI编程实例 博主也在持续学习中[ 持续更新中!!! 欢迎白嫖 也求粉啊啊啊~ ]
本文介绍了GUI的图形界面编程(相关视频是哔站上的应该搜这个题目就能找到),文章还是很基础的,反正我是小白从0开始,主要的结构tinkter库、重要组件简介(这个不用死记硬背 用的时候再说)、Label&…...
Vue2和Vue3中的diff算法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、diff算法是什么?二、vue2中的diff算法三、vue3中的diff算法总结 前言 一、diff算法是什么? diff算法很早就存在了,一开…...
springboot使用aop或Jackson进行数据脱敏
1.aop 启动类加EnableAspectJAutoProxy 自定义注解,在实体类中使用表示被脱敏字段 建立aop切面类 可能这里gpt会建议你用Pointcut("execution(public * com.xx.aop..*.get*(..))")这种方式拦截,这种我试了,拦截不住。猜测在mvc返…...
【Solidity】基础介绍
数据类型 值类型 值类型的变量在赋值或作为函数参数传递时会被复制。 布尔类型:bool整数类型: 无符号:uint8、uint16、…、uint256 (uint256 可简写为 uint)有符号:int8、int16、…、int256 (int256可简写为 int) 地址类型&…...
【SpringBoot3】双向实时通讯 websocket
文章目录 一、Websocket使用步骤二、示例1:继承抽象类 AbstractWebSocketHandler后端代码前端代码 三、示例2:使用注解ServerEndpoint后端代码前端代码 四、前端代码封装 一、Websocket使用步骤 在Spring Boot中使用WebSocket是一个常见的需求ÿ…...
搭建内网开发环境(一)|基于docker快速部署开发环境
引言 最近因需要搭建一套简易版的纯内网的开发环境,服务器采用 centos8.0,容器化技术采用 docker 使用 docker-compose 进行容器编排。 该系列教程分为两大类: 软件安装和使用,这类是开发环境常用的软件部署和使用,涉…...
MATLAB R2023b配置Fortran编译器
MATLAB R2023b配置Fortran编译器 引言1. 安装Visual Studio 20192. 安装Intel API20243. 配置xml文件文件4. 设置环境变量5. MATLAB编译Fortran 引言 当我们需要用到MATLAB编译Fortran代码后进行调用计算时,整个配置流程较繁琐。下面以MATLAB R2023b为例࿰…...
2024新型数字政府综合解决方案(七)
新型数字政府综合解决方案通过集成人工智能、大数据、区块链和云计算技术,创建了一个高度智能化和互联互通的政府服务平台,旨在全面提升行政效率、服务质量和透明度。该平台实现了跨部门的数据整合与实时共享,利用人工智能进行智能决策支持和…...
搭建高可用k8s集群
高可用 Kubernetes V1.28.10 安装 文章目录 1. 环境介绍2. 准备工作2.1 修改主机名称2.2 修改hosts文件2.3 关闭防火墙和SLinux2.4 配置SSH免密访问2.4.1 主机名称: k8s-master-01 操作 2.5 配置yum源2.6 禁用Swarp分区2.7 同步时间2.8 配置内核转发及网桥过滤2.9 安装 IPVS 3…...
完美解决html2canvas + jsPDF导出pdf分页内容截断问题
代码地址:https://github.com/HFQ12333/export-pdf.git html2canvas jspdf方案是前端实现页面打印的一种常用方案,但是在实践过程中,遇到的最大问题就是分页截断的问题:当页面元素超过一页A4纸的时候,连续的页面就会…...
14 地址映射
14 地址映射 1、地址划分2、相关函数2.1 ioremap/iounmap2.2 mmap地址映射 3、总结 1、地址划分 明确:在linux系统中,不管是应用程序还是驱动程序,都不允许直接访问外设的物理地址,要想访问必须将物理地址映射到用户虚拟地址或者内核虚拟地址࿰…...
Java Resilience4j-RateLimiter学习
一. 介绍 Resilience4j-RateLimiter 是 Resilience4j 中的一个限流模块,我们对 Resilience4j 的 CircuitBreaker、Retry 已经有了一定的了解,现在来学习 RateLimiter 限流器; 引入依赖; <dependency><groupId>io.g…...
Nginx--地址重写Rewrite
一、什么是Rewrite Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程 URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的一种技术。比如http://www.123.com/news/index.php?id123 使用U…...
webflux源码解析(1)-主流程
目录 1.关键实例的创建1.1 实例创建1.2 初始化 2.处理请求的关键流程2.1 从ReactorHttpHandlerAdapter开始2.1 DispatcherHandler的初始化2.2查找mapping handler2.3 处理请求(执行handler)2.4 返回结果处理 3.webflux的配置装配参考: WebFlux是Spring 5.0框架推出的…...
ipad作为扩展屏的最简单方式
将iPad用作扩展屏幕有几种简单而有效的方法。以下是几种常见的方式: 1. Sidecar(苹果官方功能) 适用设备:iPad和Mac(macOS Catalina及以上版本)。功能:Sidecar 是苹果官方的功能,可…...
【卡码网Python基础课 17.判断集合成员】
目录 题目描述与分析一、集合二、集合的常用方法三、代码编写 题目描述与分析 题目描述: 请你编写一个程序,判断给定的整数 n 是否存在于给定的集合中。 输入描述: 有多组测试数据,第一行有一个整数 k,代表有 k 组测…...
生物研究新范式!AI语言模型在生物研究中的应用
–https://doi.org/10.1038/s41592-024-02354-y 留意更多内容,欢迎关注微信公众号:组学之心 Language models for biological research: a primer 研究团队及研究单位 James Zou–Department of Biomedical Data Science, Stanford University, Stan…...
python语言day08 属性装饰器和property函数 异常关键字 约束
属性装饰器: 三个装饰器实现对私有化属性_creat_time的get,set,del方法; 三个装饰器下的方法名都一样,通过message.creat_time的不同操作实现调用get,set,del方法。 __inti__: 创建并…...
day01JS-数据类型-01
1. 浏览器内核 通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)…...
MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74)
专栏往期文章,包含本章 MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74) 一、算法介绍二、算法实现1.代码2.效果总结一、算法介绍 手动实现一种基于高度覆盖值的建筑物点云提取方法,适用于高大的城市建筑物,比只利用高度提取建筑物的方法更加稳定和具有价值,主要…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
