本文可以学习到以下内容:

  1. 使用tkinter的Entry功能获取本地文件夹
  2. 使用tkinter的Label功能设置文本
  3. 使用tkinter的Button功能创建一个按钮
  4. 使用tkinter的Combox功能创建一个下拉框
  5. 使用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工具的更多相关文章

  1. 编写一个闹钟和定时关机工具(MFC VS2010)

    这个小工具在自己生活当中能用到,运行软件以后,会显示当前的系统时间,然后你可以设定时间,再选择是定时响铃还是关机.截图如下: 前言:本程序采用visual studio 2010 ,对话框类型的应用程 ...

  2. Python Django 编写一个简易的后台管理工具4-添加admin模版

    导入admin后台模版 可以在网上任意搜索模版,我这里也提供一个地址github 拷贝admin后台的html文件至项目的templates文件夹 创建static文件夹,将admin后台的js,im ...

  3. Python Django 编写一个简易的后台管理工具3-运行项目

    编写view页面 def hello(request): return render(request,'hello.html') 编写html页面 <!DOCTYPE html> < ...

  4. Python Django 编写一个简易的后台管理工具2-创建项目

    django-admin 创建项目 pycharm 创建项目

  5. Python Django 编写一个简易的后台管理工具1-安装环境

    安装python环境 MAC 一般都会自带 Python2.x版本 的环境,你也可以在链接 https://www.python.org/downloads/mac-osx/ 上下载最新版安装. 安装 ...

  6. 尝鲜.net core2.1 ——编写一个global tool

    本文内容参考微软工程师Nate McMaster的博文.NET Core 2.1 Global Tools 用过npm开发都知道,npm包都可以以全局的方式安装,例如安装一个http-server服务 ...

  7. 使用GUI工具高效构建你自己的Nuget包

    写这篇文章的原因是我在学习构建nuget包的时候,发现了一个官方推荐的GUI工具,而官方的工具介绍文章已经过时,一些地方和现在最新版本的工具有些差异,所以特意利用假期最后一个下午写下来,希望能帮助更多 ...

  8. Python3使用tkinter编写GUI程序

    目录 @(Python3中tkinter写的HTTP测试工具代码支持正则表达式和XPATH) 程序非常简单,暂时只支持GET方法,使用内置库tkinter编写GUI窗口,在Mac下运行效果图如下,wi ...

  9. MFC+WinPcap编写一个嗅探器之四(获取模块)

    这一节主要介绍如何获取设备列表,比较简单 获取设备列表主要是在CAdpDlg中完成,也就是对应之前创建的选择适配器模块,如图: 当打开选择适配器对话框后,在列表视图控件中显示当前主机所有适配器及适配器 ...

  10. 使用PyQt5编写一个简单的GUI程序(pyside 有 pyside-uic 把ui文件转成py文件,pyside-rcc 把qrc文件转成 py文件导入就行了)

    我做Python窗口界面编程时,经常使用PyQt进行设计.这里简单叙述一下使用PyQt5制作一个简单的图形界面的流程 PyQt的简介以及开发环境的搭建在此不多赘述. 1.       打开Qt Des ...

随机推荐

  1. HOMER docker版本安装详细流程

    概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具. HOMER是一款强大的.运营商级.可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应 ...

  2. 网络连接(CSP-J 2021 T3)

    一道又臭又长的模拟题目..... 主要有几个小技巧可以帮大家省一省代码: 1.scanf("%d.%d",&b,&c); 这里是定了一个格式如果不按格式来就不输入后 ...

  3. 鸣人的影分身(等级考试4级 2021-03 T3)

    题目: 此题题干又臭又长,直接看简化版. 鸣人的影分身(等级考试4级 2021-03 T3)等效于 把m个苹果分到n个盘子中,问有几种可能? dp[i][j]表示有i个盘子j个苹果时有多少种放法. 用 ...

  4. 分布式id的方案

    1 简介 在分布式系统架构中,通常会涉及到分布式全局唯一ID的生成 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识. 如在金融.电商.支付.等产品的系统中,数据日渐增长,对数据分库分表后需 ...

  5. 基于pytorch实现模型剪枝

    一,剪枝分类 1.1,非结构化剪枝 1.2,结构化剪枝 1.3,本地与全局修剪 二,PyTorch 的剪枝 2.1,pytorch 剪枝工作原理 2.2,局部剪枝 2.2.1,局部非结构化剪枝 2.2 ...

  6. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。(C# EXCEL导入demo)

    1. 安装office包  https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255 2.需要在相应的IIS应用程序池启用 ...

  7. Android:LitePal 在第一次创建表之后第二次创建新的表不生效

    因为业务需求的增长,后续需要继续创建新的表,有可能代码没有任何报错,同时数据库也没有任何新的表加入进来. 修改 litepal.xml 的 version,如果之前是 1,那么修改为 2,总之比之前 ...

  8. Android:ViewModel

    什么是 ViewModel ViewModel 旨在以注重生命周期的方式存储和管理界面相关数据.ViewModel 让数据可在发生屏幕旋转等配置更改后继续留存. 上面一段话是截取自官方文档对 View ...

  9. LeetCode-2038 如果相邻两个颜色均相同则删除当前颜色

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-colored-pieces-if-both-neighbors-are-the-s ...

  10. Linux操作命令(八)1.sort命令 2.uniq命令 3.join命令

    1.sort,排序 常用参数 参数 描述 -n 基于字符串的长度来排序,使用此选项允许根据数字值排序,而不是字母值 -k 指定排序关键字 -b 默认情况下,对整行进行排序,从每行的第一个字符开始.这个 ...