Python小细节之Gui图形化界面库tkinter学习

news2024/11/18 13:36:52

敲打计数脚本学TKinter

    • 引言
    • 开整
      • 选择决定难易
      • 了解她
      • 使用她
        • 运行效果
    • 结尾

引言

我的爬取表情包的爬虫文件写好了
运行
输入关键词就可以得到对应的
表情包
我也通过pyinstall 打包了
但是很丑
就只有一个黑box

我是新手
所以我知道
这对于普通人来说
不友好
且在使用的过程中
不方便交互

加 界面 优化!

我不会呀!

一起学!
在这里插入图片描述

在这里插入图片描述
这是我的爬取表情包程序的界面,一个字!丑!
后续会继续优化!
在这里插入图片描述

开整

选择决定难易

在上一篇编辑器Spyder的bug
深刻意识到了
选择很重要
我知道python有多个图形界面化库
所以做了对比文章
结果是选择了 Tkinter
在这里插入图片描述

了解她

1. Tkinter简介
Tkinter是基于Tcl/Tk工具包的Python接口,这是一个跨平台的GUI开发工具包,支持在Windows、Mac OS X和Linux等操作系统上创建桌面应用程序。

2. 基本用法
使用Tkinter创建一个最简单的窗口,你需要导入Tkinter模块并创建一个顶级窗口对象:

import tkinter as tk

# 创建主窗口
root = tk.Tk()

# 设置窗口标题
root.title("我的第一个Tkinter程序")

# 窗口默认大小
root.geometry("300x200")

# 运行窗口主循环
root.mainloop()

3. 控件与布局
Tkinter提供了多种控件,如按钮(tk.Button)、标签(tk.Label)、文本框(tk.Entry)、滚动条(tk.Scrollbar)、复选框(tk.Checkbutton)、单选按钮(tk.Radiobutton)等。你可以通过这些控件构建丰富的交互式界面,并利用布局管理器(如tk.Gridtk.Placetk.Pack)来组织控件的位置和排列方式。

例如,添加一个按钮到窗口中:

button = tk.Button(root, text="点击我", command=lambda: print("你点击了按钮"))
button.pack()  # 使用pack布局管理器将按钮放入窗口中

4. 事件处理
Tkinter支持事件驱动编程,可以为各个控件绑定事件处理器,如点击按钮时触发的动作:

def on_button_click():
    print("按钮被点击了")

button = tk.Button(root, text="点击事件测试")
button.bind("<Button-1>", on_button_click)  # 绑定鼠标左键点击事件

5. 更多高级功能
Tkinter还支持更多高级特性,如菜单栏(tk.Menu)、弹出对话框(tk.messagebox)、文件对话框(tk.filedialog)、颜色选择器(tk.colorchooser)等,以及自定义图形绘制(通过tk.Canvas)。
对了
在这里插入图片描述

官方文档不能忘
时刻记住,使用上面有解决不来的问题
回顾官方文档是最好的
要是连官方文档都解决不了
那么 那就是bug!

使用她

```python
import tkinter as tk  # 导入tkinter模块,别名tk
from tkinter import messagebox  # 导入messagebox模块

# 初始化窗口
root = tk.Tk()  # 创建一个Tkinter的根窗口对象
root.title("简易计数器")  # 设置窗口标题为"简易计数器"
root.geometry("300x150")  # 设置窗口大小为300x150

# 定义初始计数值
count = 0  # 初始化计数为0

# 创建一个标签来显示计数结果
label = tk.Label(root, text="计数: " + str(count), font=("Arial", 16))  
# 创建一个Label对象,显示计数结果
label.pack(pady=20)  # 将Label对象添加到窗口中,并设置垂直间距为20

# 定义一个函数来处理按钮点击事件并更新计数
def increment_count():
    global count  # 声明count为全局变量
    count += 1  # 计数加1
    label.config(text="计数: " + str(count))  # 更新计数显示
    root.bell()  # 点击一下播放一次声音
    if count % 10 == 0:  # 每敲10次暂停一次
        root.bell()  # 停止播放声音
        messagebox.showinfo("提示", "敲击了" + str(count) + "下")  # 弹窗显示敲击了多少下

# 创建一个按钮,并绑定点击事件到increment_count函数
button = tk.Button(root, text="点我计数", command=increment_count)  
# 创建一个Button对象,点击时调用increment_count函数
button.pack(pady=10)  # 将Button对象添加到窗口中,并设置垂直间距为10

# 运行主循环
root.mainloop()  # 进入Tkinter的主循环,等待事件发生

``

它会在每次点击按钮时增加计数并更新显示在标签上的数字
同时,每次点击都会播放一次系统提示音(root.bell())
并且当计数达到10的倍数时
会额外播放一次提示音
并弹出一个消息对话框显示当前的敲击次数。
展示了如何使用Tkinter创建基本的图形用户界面组件(如窗口、标签和按钮)
还演示了事件绑定、全局变量的使用
以及如何调用messagebox模块来显示信息对话框。
在这里插入图片描述

运行效果

在这里插入图片描述
这个小程序让我想起了敲木鱼
哈哈
等你们学会
后续你们可以再这个的基础上进行延时
做出来记得分享哦!

结尾

现在有了Ai真的很方便
每行代码都给你注释的明明白白
我只需要再看一眼
确保说的是人话
那么这个教程代码就可以顺利产出!
相信你们应该都看得懂吧
在这里插入图片描述

开玩笑啦, ! 不懂评论区见

那么
有缘再见!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自定义列表里面实现多选功能

需求 我们在开发过程中有时候会遇到列表里面会有多选&#xff0c;然后列表样式也要进行自定义。这里我们如果直接使用ElementUI组件el-table表格的时候这里实现起来可能比较复杂不方便&#xff0c;我们这里手写自定义一下列表里面多选的功能。 实现效果如下图所示&#xff1a…

二叉搜索树与双向链表

解题思路一&#xff1a; /** public class TreeNode {int val 0;TreeNode left null;TreeNode right null;public TreeNode(int val) {this.val val;} } */ // 一定要用自己的理解真正弄出来才行&#xff0c;否则没有用&#xff01; // 再次提醒&#xff0c;计算机这种工科…

【Python案例实战】水质安全分析及建模预测

一、引言 1.水资源的重要性 水是生命之源,是人类生存和发展的基础。它是生态系统中不可或缺的组成部分,对于维系地球上的生命、农业、工业、城市发展等方面都具有至关重要的作用。 2.水质安全与人类健康的关系 水质安全直接关系到人类的健康和生存。水中的污染物和有害物…

C# OpenCvSharp DNN Gaze Estimation

目录 介绍 效果 模型信息 项目 代码 frmMain.cs GazeEstimation.cs 下载 C# OpenCvSharp DNN Gaze Estimation 介绍 训练源码地址&#xff1a;https://github.com/deepinsight/insightface/tree/master/reconstruction/gaze 效果 模型信息 Inputs ----------------…

正则表达式解析与应用:深度剖析正则表达式的威力

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

pytorch机器学习各种激活函数总结(不完整学习更新中~)

pytorch各种激活函数总结 0.思维导图预览1. ReLU函数1.1 改进版ReLU6函数 2. Sigmoid函数3. Softmax函数4. Tanh函数5.&#xff08;学习后更新&#xff09; 0.思维导图预览 1. ReLU函数 ReLU&#xff08;Rectified Linear Unit&#xff09;线性整流函数 其公式为&#xff1a; …

常用API(String,StringBuilder,StringJoiner)

文章目录 1.API1.1API概述1.2如何使用API帮助文档 2.String类2.1String类概述2.2String类的特点2.3String类的构造方法2.4创建字符串对象两种方式的区别2.5字符串的比较2.5.1号的作用2.5.2equals方法的作用 2.6用户登录案例2.6.1案例需求2.6.2代码实现 2.7遍历字符串案例2.7.1案…

软件测试|SQL AND和OR运算符解析

简介 在SQL&#xff08;Structured Query Language&#xff09;中&#xff0c;AND和OR是两个常用的逻辑运算符。它们用于组合条件来构建复杂的查询语句&#xff0c;帮助我们更精确地过滤和检索数据。本文将详细介绍SQL中的AND和OR运算符&#xff0c;包括其语法、用法以及使用时…

数据结构学习 jz63股票的最大利润

关键词&#xff1a;动态规划 滚动数组优化 这题不要被动态规划吓到了&#xff0c;其实很简单。 用时16min 题目&#xff1a; 思路&#xff1a; 最大利润的实现办法&#xff1a;在最低的时候买入&#xff0c;在最高的时候卖出。 dp状态&#xff1a; dp[i]第i天如果卖出的最…

uniapp中组件库的Checkbox 复选框 的丰富使用方法

目录 #平台差异说明 #基本使用 #自定义形状 #禁用checkbox #自定义形状 #自定义颜色 #横向排列形式 #横向两端排列形式 API #Checkbox Props #CheckboxGroup Props #CheckboxGroup Event 复选框组件一般用于需要多个选择的场景&#xff0c;该组件功能完整&#xff…

STM32疑难杂症

1.keil的奇怪问题 创建的数组分配内存到0x10000000地址的时候,数据总是莫名其妙的出现问题,取消勾选就正常了 stm32f407内部有一个CCM内存,这部分内存只能由内核控制,任何外设都不能够进行访问。这样问题就来了,如果使用keil5进行编程时勾选了这个选项(下图),则编译的…

八、Lua脚本详解—— 超详细操作演示!

八、Lua脚本详解 —— 超详细操作演示&#xff01; 八、Lua脚本详解8.1 Lua 简介8.2 Linux 系统的Lua8.2.1 Lua 下载8.2.2 Lua 安装8.2.3 Hello World 8.3 Win 系统的Lua8.4 Lua 脚本基础8.4.1 注释8.4.2 数据类型8.4.3 标识符8.4.4 运算符8.4.5 函数8.4.6 流程控制语句8.4.7 循…

2021-05-08 51单片机74HC164、74LS164、74HCT164、74HC154、74HCT154应用三极管控制继电器

74HC164、74HCT164是8位边沿触发式移位寄存器&#xff0c;串行输入数据&#xff0c;然后并行输出。数据通过两个输入端&#xff08;DSA或DSB&#xff09;之一串行输入&#xff1b;任一输入端可以用作高电平使能端&#xff0c;控制另一输入端的数据输入。两个输入端或者连接在一…

IMS SIP register消息中的Contact header field

SIP register中的Contact还要承载User Agent的能力信息。 实网下抓取的UE log如上&#xff0c;下面就主要看下Contact header field要包含的内容及其含义。 Contact header field设置为包括 UE IP地址或FQDN的SIP URI。 如上图contact中sip:69a5de6a-a03e-46d6-ad7a-b0d974c8f…

大创项目推荐 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

函数式编程及应用

目录 什么是Lambdalambda表达式的类型及实现方式类型语法 常用函数式接口Customer 函数式编程在Stream中的应用总结参考资料 什么是Lambda Lambda 表达式是 JDK8 的一个新特性&#xff0c;可以取代大部分的匿名内部类&#xff0c;写出更优雅的Java代码。 Lambda 表达式描述了一…

图片剪切软件,让图片处理更加高效

随着数字技术的不断发展&#xff0c;图片剪切也在不断进步。从手动裁剪到自动识别&#xff0c;图片剪切正变得越来越简单、高效&#xff0c;在这里面&#xff0c;图片处理软件的作用是不可忽视的。 所需工具&#xff1a; 一个【首助编辑高手】软件 需要剪切的图片 操作步骤…

【python】魔术方法大全(一)--基础篇

如果对你有帮助&#xff0c;欢迎微信搜索【海哥python】关注这个互联网苟且偷生的工具人。 什么是魔术方法 所谓魔法方法&#xff0c;它的官方的名字实际上叫special method&#xff0c;是Python的一种高级语法&#xff0c;允许你在类中自定义函数&#xff0c;并绑定到类的特殊…

Weblogic安全漫谈(四)

黑名单机制必然会推动两种研究方向的发展&#xff1a;一是挖掘不在黑名单的新组件&#xff0c;是为绕过规则&#xff1b;二是发掘检查的盲区&#xff0c;是为绕过逻辑。 CVE-2020-14756 二次反序列化具有对抗检查逻辑的天生丽质&#xff0c;在CVE-2018-2893中就有利用字节数组…

Kubeadmin实现k8s集群:

Kubeadmin来快速搭建一个k8s集群&#xff1a; 二进制搭建适合大集群&#xff0c;50台以上的主机&#xff0c; 但是kubeadm更适合中小企业的业务集群 环境&#xff1a; Master&#xff1a;20.0.0.71 2核4G 或者4核8G docker kubelet kubectl flannel Node1&#xff1a;20.…