用tkinter编写一个获取图片资源的GUI工具
本文可以学习到以下内容:
- 使用tkinter的Entry功能获取本地文件夹
- 使用tkinter的Label功能设置文本
- 使用tkinter的Button功能创建一个按钮
- 使用tkinter的Combox功能创建一个下拉框
- 使用tkinter的pack方法对界面进行布局
效果展示
第11章用tkinter编写一个获取图片资源的GUI工具
【路径选择】按钮选择图片保存的地址
【图片内容】输入框中输入需要下载的图片关键字
【下载数量】下拉框默认为10,可以下拉选择,也可以自定义下载数量
【确定】按钮点击后开始下载图片下载日志会显示在下方的文本框中
导入tkinter库
导入tkinter的库,可以使用ttkbootstrap美化生成的界面
ttkbootstrap官网地址:https://ttkbootstrap.readthedocs.io/en/latest/zh/styleguide/frame/
import tkinter as tk
from ttkbootstrap.constants import *
from tkinter.filedialog import askdirectory
from ttkbootstrap import Frame, Button, Label, Text, Entry, Combobox
窗口属性
主要内容包括:
- 根据设备屏幕的宽高自适应调整窗口的宽高
- 设置窗口打开的位置
- 设置窗口标题
- 创建图片保存地址、输入关键词、下载数量的变量
- 创建两个矩形区域包含组件
class BaiDuImageSpiderGUI:
def __init__(self, win_width=1000, win_height=600):
# 创建一个 tkinter 对象
self.root = tk.Tk()
# 设置窗口的宽度和高度
self.win_width = win_width
self.win_height = win_height
# 设备屏幕的宽度和高度
screen_width = self.root.winfo_screenwidth()
screen_height = self.root.winfo_screenheight()
# 设置窗口打开的x,y位置
x = int((screen_width - win_width) / 2)
y = int((screen_height - win_height) / 2)
# 窗口标题
self.root.title("图片爬虫")
self.root.geometry("%sx%s+%s+%s" % (win_width, win_height, x, y))
# 设置窗口宽高固定
# self.root.resizable(None,None)
# 设置窗口图标
# root.iconbitmap("./image/icon.ico")
# 下载数量
self.download_num = tk.StringVar()
# 保存图片地址
self.save_image_path = tk.StringVar()
# 关键词内容
self.key_word = tk.StringVar()
# 第一个矩形区域
self.frame_1 = Frame(self.root)
self.frame_1.pack()
# 第一个矩形区域
self.frame_2 = Frame(self.root)
self.frame_2.pack()
按钮和输入框
主要内容包括:
- 在第一个矩形框中绘制组件
- 用Label组件设置文本
- 用Button和askdirectory组件打开文件夹
- 用Entry组件绘制输入框
- 用Button组件绘制按钮
- 用Combobox组件绘制下拉框
- 用pack方法设置组件位置
def create_frame_1(self):
# 图片保存地址
image_path_label = Label(self.frame_1, text="图片保存地址:")
image_path_label.pack(side=LEFT, padx=5, pady=10)
# 图片地址输入框
image_path_entry = Entry(self.frame_1, bootstyle=SUCCESS, textvariable=self.save_image_path)
image_path_entry.pack(side=LEFT, padx=5, pady=10)
# 路径选择按钮
image_path_button = Button(self.frame_1, text="路径选择", bootstyle=SUCCESS, command=self.save_path)
image_path_button.pack(side=LEFT, padx=5, pady=10)
# 关键字输入框
key_word_label = Label(self.frame_1, text="图片内容:")
key_word_label.pack(side=LEFT, padx=5, pady=10)
key_word_entry = Entry(self.frame_1, bootstyle=INFO, textvariable=self.key_word)
key_word_entry.pack(side=LEFT, padx=5, pady=10)
# 下拉框描述
combox_label = Label(self.frame_1, text="下载数量:")
combox_label.pack(side=LEFT, padx=5, pady=10)
# 下拉框绑定到tinker专属的变量上
combox = Combobox(self.frame_1, bootstyle=PRIMARY, textvariable=self.download_num)
# 设置下拉框的值、权限、默认值
combox["value"] = (10, 20, 30, 40, 50)
# combox["state"] = "readonly"
combox.current(0)
# 设置下拉框位置
combox.pack(side=LEFT, padx=5, pady=10)
# 按钮
button = Button(self.frame_1, text="确定", bootstyle=PRIMARY, command=self.spider_main)
button.pack(side=LEFT, padx=5, pady=10)
文本输入框Text
在第二个矩形框中用Text绘制文本输入框,将下载信息写入文本框
def create_frame_2(self):
# # 文本框
self.download_input_text = Text(self.frame_2, width=self.win_width - 200, height=self.win_height - 200)
self.download_input_text.pack(side=TOP, anchor=CENTER, padx=50, pady=10)
def save_path(self):
path_ = askdirectory()
self.save_image_path.set(path_)
def spider_main(self):
pass
def create_window(self):
self.create_frame_1()
self.create_frame_2()
self.root.mainloop()
运行
实例化BaiDuImageSpiderGUI(),调用create_window()方法创建界面
if __name__ == '__main__':
app = BaiDuImageSpiderGUI()
app.create_window()
打包成exe文件
为了方便使用和运行,使用pyinstaller工具打包为exe文件
pyinstaller -F -w -i sspython.ico image_spiderGUI.py
源码地址
链接:https://pan.baidu.com/s/1LLVTaZUuS7QXve2oiMYnqQ?pwd=iqv9
提取码:iqv9
用tkinter编写一个获取图片资源的GUI工具的更多相关文章
- 编写一个闹钟和定时关机工具(MFC VS2010)
这个小工具在自己生活当中能用到,运行软件以后,会显示当前的系统时间,然后你可以设定时间,再选择是定时响铃还是关机.截图如下: 前言:本程序采用visual studio 2010 ,对话框类型的应用程 ...
- Python Django 编写一个简易的后台管理工具4-添加admin模版
导入admin后台模版 可以在网上任意搜索模版,我这里也提供一个地址github 拷贝admin后台的html文件至项目的templates文件夹 创建static文件夹,将admin后台的js,im ...
- Python Django 编写一个简易的后台管理工具3-运行项目
编写view页面 def hello(request): return render(request,'hello.html') 编写html页面 <!DOCTYPE html> < ...
- Python Django 编写一个简易的后台管理工具2-创建项目
django-admin 创建项目 pycharm 创建项目
- Python Django 编写一个简易的后台管理工具1-安装环境
安装python环境 MAC 一般都会自带 Python2.x版本 的环境,你也可以在链接 https://www.python.org/downloads/mac-osx/ 上下载最新版安装. 安装 ...
- 尝鲜.net core2.1 ——编写一个global tool
本文内容参考微软工程师Nate McMaster的博文.NET Core 2.1 Global Tools 用过npm开发都知道,npm包都可以以全局的方式安装,例如安装一个http-server服务 ...
- 使用GUI工具高效构建你自己的Nuget包
写这篇文章的原因是我在学习构建nuget包的时候,发现了一个官方推荐的GUI工具,而官方的工具介绍文章已经过时,一些地方和现在最新版本的工具有些差异,所以特意利用假期最后一个下午写下来,希望能帮助更多 ...
- Python3使用tkinter编写GUI程序
目录 @(Python3中tkinter写的HTTP测试工具代码支持正则表达式和XPATH) 程序非常简单,暂时只支持GET方法,使用内置库tkinter编写GUI窗口,在Mac下运行效果图如下,wi ...
- MFC+WinPcap编写一个嗅探器之四(获取模块)
这一节主要介绍如何获取设备列表,比较简单 获取设备列表主要是在CAdpDlg中完成,也就是对应之前创建的选择适配器模块,如图: 当打开选择适配器对话框后,在列表视图控件中显示当前主机所有适配器及适配器 ...
- 使用PyQt5编写一个简单的GUI程序(pyside 有 pyside-uic 把ui文件转成py文件,pyside-rcc 把qrc文件转成 py文件导入就行了)
我做Python窗口界面编程时,经常使用PyQt进行设计.这里简单叙述一下使用PyQt5制作一个简单的图形界面的流程 PyQt的简介以及开发环境的搭建在此不多赘述. 1. 打开Qt Des ...
随机推荐
- 记录一次前端hack尝试
背景 playcode很好用,但是给的免费时间很短,于是想hack他 hack的步骤全部来源于bilibili视频:https://www.bilibili.com/video/BV1N3411v7C ...
- 如何让程序更健壮「GitHub 热点速览」
对于 ML 模型训练而言,好的数据集能让结果更健壮,cleanlab 是一个降低数据噪音,及时帮你修正数据集错误的工具.好的工具能让你的结果更完美.同样的,RedTeam-Tools 提高了渗透测试的 ...
- P21_事件传参与数据同步
事件绑定 在事件处理函数中为 data 中的数据赋值 通过调用 this.setData(dataObject) 方法,可以给页面 data 中的数据重新赋值,示例如下: 事件传参 小程序中的事件传参 ...
- 为Jekyll静态网站添加PlantUML插件
前言 突然想起来要好好整理一下自己的博客空间,已经荒废很多年,如果再不捡起来,等到自己知识老化的时候再去写东西就没人看了. 使用Github Pages + Jekyll把博客发布为静态网站,给人感觉 ...
- Eureka 注册中心和服务提供者
什么是Eureka组件 spring cloud Eureka ,提供服务注册和服务发现的功能. 一:spring cloud Eureka Eureka Server 服务端 Eureka Clie ...
- 郁金香 注入DLL代码 与MFC窗口DLL文件 开源
10/10号更新 DLL注入器注入DLL卡死 问题 新增打开控制台 将阳光输出到控制台中 注入DLL代码 1 #include <stdio.h> 2 #include<Window ...
- dotnet 缓存
Net 内置内存缓存 asp.net 中是有缓存的实现:HttpContext.Cache,缓存的数据是放到 Web 服务器的进程 内存里. 在控制台.WinForm.子线程.SignalR 等不支持 ...
- Vulhub 漏洞学习之:Couchdb
Vulhub 漏洞学习之:Couchdb 目录 Vulhub 漏洞学习之:Couchdb 1 Couchdb 垂直权限绕过漏洞(CVE-2017-12635) 1.1 漏洞利用过程 2 Couchdb ...
- 软件设计原则(Principles)
设计模式的从许多优秀的软件中总结出来的 , 使用设计模式能够实现可复用.可维护.开发人员之间方便沟通设计和理解代码. Tips 对于模式的使用 , 不能拘泥于格式 , 事实上根据需要模式是可以演化的 ...
- LeetCode-475 供暖器
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/heaters 题目描述 冬季已经来临. 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖. ...