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

敲打计数脚本学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真的很方便
每行代码都给你注释的明明白白
我只需要再看一眼
确保说的是人话
那么这个教程代码就可以顺利产出!
相信你们应该都看得懂吧
在这里插入图片描述

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux第4步_安装VMwareTools

安装Ubuntu操作系统后&#xff0c;就可以安装VMwareTools了&#xff0c;目的是实现“电脑和虚拟机之间互相复制粘贴文件”。 1、双击桌面图标“VMware Workstation Pro”&#xff0c;然后点击下图中的“开机”&#xff0c;打开虚拟机电源。 2、双击下图中的用户名“zgq” 3、…

如何使用CapSolver解决Web爬虫中遇到的CAPTCHA问题

Web爬取是一种强大的技术&#xff0c;用于从网站中提取数据&#xff0c;但经常会遇到一个常见障碍&#xff0c;即CAPTCHA。CAPTCHA是“Completely Automated Public Turing test to tell Computers and Humans Apart”的缩写&#xff0c;旨在防止自动机器人访问网站。然而&…

PyCharm社区版设置简体中文界面

点击“File”&#xff0c; 出现的菜单中点击“Settings”, 在弹出的界面中&#xff0c;选“Plugins”&#xff0c; 然后在右边输入框中输入“chinese”, 在搜索结果中&#xff0c;选中Chinese(Simplified) Language Pack&#xff0c; 点击右边的“install”即可 最后“r…

Mysql基础总结

一、MySql基础 MySQL常见面试题 一、索引相关 &#xff08;1&#xff09;什么是索引? 索引是一种数据结构&#xff0c;可以帮助我们快速的进行数据的查找。 &#xff08;2&#xff09;索引是个什么样的数据结构呢? 索引的数据结构和具体存储引擎的实现有关&#xff0c;…

利用Fastcgi+PHP-FPM非授权访问实现代码执行

目录 Fastcgi Record Fastcgi Type PHP-FPM&#xff08;FastCGI进程管理器&#xff09; Nginx&#xff08;IIS7&#xff09;解析漏洞 security.limit_extensions配置 漏洞演示 今天要和大家分享的是利用Fastcgi和PHP_FPM实现未授权访问实现代码执行&#xff0c;首先我们需…

goland ide中项目结构不对的解决办法

在 GoLand IDE 中&#xff0c;项目名称的重命名通常是通过更改项目的根目录名称来实现的。但是&#xff0c;更改项目根目录的名称不会自动更新顶部导航栏中的项目名称。 想要更新顶部显示的名称&#xff0c;需要关闭当前项目&#xff0c;重新打开重命名后的目录文件&#xff0…

一个古老的终端显示控制命令-tput命令|帮你解决中英文混合时终端列对齐输出问题

终端显示控制对于写一个 终端脚本 是非常有用的&#xff0c;在没有图形界面时Unix和类Unix系统用户都是在Terminal控制终端下工作的。虽然Linux操作系统的图形界面出现淡化了终端显示控制&#xff0c;但终端控制功能依旧是每个命令行用户不可或缺的一部分。只是我们不知道在使用…

智能视频监控技术在旅游业中如何发挥最大作用,助力旅游业发展

随着“南方小土豆勇闯哈尔滨”的词条霸榜热搜&#xff0c;大众旅游热情再次点燃。最近哈尔滨游客爆满的情况&#xff0c;极易发生游客迷路、景区瘫痪、交通堵塞等情况&#xff0c;当地有关部门的压力不言而喻。对于节假日或者“破天富贵”、“报复性旅游”的情况&#xff0c;景…

书生·浦语大模型实战1

书生浦语大模型全链路开源体系 视频链接&#xff1a;书生浦语大模型全链路开源体系_哔哩哔哩_bilibili 大模型之所以能收到这么高的关注度&#xff0c;一个重要原因是大模型是发展通用人工智能的重要途径 深度信念网络&#xff1a; &#xff08;1&#xff09;又被称为贝叶斯网…

数据库基本知识2

目录 为保证数据库是可恢复的&#xff0c;登记日志文件时 排他锁 并发操作带来的数据不一致性 数据模型的三要素 数据独立性 为保证数据库是可恢复的&#xff0c;登记日志文件时 为保证数据库是可恢复的&#xff0c;登记日志文件时必须遵循两条原则&#xff1a; 1. 登记的…

nginx编译时添加额外第三方模块

比如要添加第三方流量监控模块nginx-module-vts 1、官网 官网 Releases vozlt/nginx-module-vts GitHubNginx virtual host traffic status module. Contribute to vozlt/nginx-module-vts development by creating an account on GitHub.https://github.com/vozlt/nginx-mo…

如何使用 Python 解决网络抓取中的 reCAPTCHA 问题

在网络抓取的领域&#xff0c;开发人员经常面临 reCAPTCHA 的障碍。为了区分人类和自动化机器人&#xff0c;reCAPTCHA 可能会成为那些试图从网站提取数据的人的沉痛阻碍。然而&#xff0c;借助 Python 和像 Capsolver 这样的工具&#xff0c;可以绕过 reCAPTCHA 并继续抓取有价…

又一券商被点名,网络安全问题不容忽视

12月25日&#xff0c;黑龙江证监局发布公告表示&#xff0c;江海证券存在关于IT治理、网络安全管理的内部决策、执行机制不健全&#xff1b;公司App个人信息保护合规性检测不充分&#xff0c;App强制、频繁、过度索取权限等问题。因此&#xff0c;黑龙江证监局决定对江海证券采…

java数据结构与算法刷题-----LeetCode509. 斐波那契数

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

2024年华为hcie方向有哪些?hcie 考点在哪里?

华为作为全球领先的ICT解决方案供应商&#xff0c;其认证体系在业内具有极高的权威性和认可度。其中&#xff0c;华为认证体系中的最高级别认证——HCIE&#xff0c;已经成为无数技术爱好者追求的目标。下面将探讨华为HCIE的方向及其考点&#xff0c;希望能对那些有志于获取HCI…

数字IC后端实现之Innovus TA-152错误解析(分频generated clock定义错误)

**ERROR: (TA-152): A latency path from the ‘Fall’ edge of the master clock at source pin… Error Code TA-152 在数字IC后端实现innovus中我们经常会看到这类Error&#xff0c;具体信息如下所示。 Error Message **ERROR: (TA-152): A latency path from the ‘Fa…

【第6期】使用Iview的Select组件进行远程搜索并在编辑时设置一个或多个默认值

本期简介 下拉框这个组件用的地方非常多&#xff0c;普通用法就是将数据列表一次性查询渲染&#xff0c;在列表里面直接本地搜索&#xff0c;优点是可缓存、速度快&#xff0c;但在某些场合并不适用&#xff0c;比如要在下拉框中选择一所中国的学校&#xff0c;幼儿园/小学/初…

[AutoSar]DaVinci Developer 命名规范

目录 关键词平台说明一、背景二、Component命名约定2.1Component Type Composition&#xff08;CtCo&#xff09;2.2Component Type Application&#xff08; CtAp&#xff09;2.3Component Type SensorActuator&#xff08;CtSa&#xff09;2.4Component Type Complex Driver&…

ThreadPoolExecutor中的keepAliveTime详解

一.keepAliveTime的概念&#xff1a; keepAliveTime的单位是纳秒&#xff0c;即1s1000000000ns&#xff0c;1秒等于10亿纳秒。 keepAliveTime是线程池中空闲线程等待工作的超时时间。 当线程池中线程数量大于corePoolSize&#xff08;核心线程数量&#xff09;或设置了allowCor…

【自学笔记】01Java基础-07面向对象基础-01封装

记录学习Java基础中有关面向对象编程的基础知识&#xff0c;包括面向对象思想&#xff0c;构造方法&#xff0c;封装思想&#xff0c;JavaBean。 1 面向对象概述 1.1 什么是面向对象编程 严谨来说&#xff1a;   面向对象编程&#xff08;Object-Oriented Programming&…