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

  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

最新文章

  1. 20款 JavaScript 开发框架推荐给前端开发者
  2. 几何服务,cut功能,输入要素target(修改后)内容。
  3. 加载AssetBundle方法
  4. jquery 判断元素是否隐藏
  5. 【软件使用】用IntelliJ IDEA开发Android程序图解
  6. 130. Surrounded Regions
  7. linux中用户信息及密码相关知识
  8. git 恢复丢失的文件
  9. PAT (Advanced Level) 1049. Counting Ones (30)
  10. CentOS 7 安装配置 NFS
  11. 快速搞定用Vue+Webpack搭建前端项目(学习好久了,该写点东西了......)
  12. 如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题
  13. JavaSE_坚持读源码_String对象_Java1.7
  14. 【Oracle】Linux7安装11g 86%报错:Error in invoking target 'agent nmhs' of makefile
  15. 2018铁三测评题write以及一些想送给你们的话
  16. 初始Openwrt
  17. hibernate4.3 无法获取数据库最新值
  18. C中预编译详解
  19. Activity的四大启动模式
  20. POST请求中,往URL传递数组

热门文章

  1. mybatis-plus 多租户
  2. SpringBoot+mybatis的驼峰命名转换不生效
  3. 力扣---167. 两数之和 II - 输入有序数组
  4. vivo官网App模块化开发方案-ModularDevTool
  5. MySQL8.0 高可用集群化 · mysql-shell · mysql-router · docker · 单主多从
  6. STM32F4寄存器初始化:编码器
  7. Mybatis的缓存与动态SQL
  8. 【Vue】vue项目目录介绍 es6的导入导出语法 vue项目开发规范 Vue项目编写步骤
  9. kali挂代理之——proxychains4
  10. ASP.NET Core - 依赖注入(二)