用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 ...
随机推荐
- springboot输出json日志
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-lo ...
- 线程基础知识12-AQS
转:https://tech.meituan.com/2019/12/05/aqs-theory-and-apply.html 1 简介 AQS,全称AbstractQueuedSynchronize ...
- IDEA手动导入jar包到maven本地库
第一步:下载需要的jar包 第二步:file project structure-liberaries 第三步:点击+号-选择java,再选择刚才下载的jar包,ok 此时我们把jar包加到项目了,但 ...
- C++ 练习7 引用作为函数返回值
当引用作为函数的返回值时,可以直接将其当作赋值语句的左值使用 如:函数refValue(int& x)可以像 a=10 中的"a"来使用 1 #include <io ...
- 深入理解JavaScript对象
前言 在 JavaScript 中,对象是一种非常常见的数据类型,几乎每个程序员都会在日常工作中频繁地使用对象.在本篇文章中,我们将深入了解 JavaScript 对象的一些基本概念和一些高级概念,这 ...
- 大规模 IoT 边缘容器集群管理的几种架构-3-Portainer
前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介 大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s 大规模 IoT 边缘容器集群管理的几种架构-2-H ...
- CSS 定位position
.link span { position: absolute; top: 0; left: 50%; transform: translateX(-50%); }
- 单兵 Web 快速开发框架!
Jmix 是低代码? 自从 Jmix 2018 年在中国推广以来(那时叫 CUBA 平台),很多开发者会在使用之前询问我们,Jmix 是不是低代码,扩展性怎么样? 低代码应用程序平台(LCAP)是当今 ...
- DesignPatternPrinciple-设计模式原则
1. 单一职责原则(Single Responsibility Principle)类T负责两个不同的职责:职责P1,职责P2. using System; using System.Collecti ...
- ROS librviz库
1.可视化管理类:rviz::VisualizationManager The VisualizationManager class is the central manager class of r ...