阅读 217

PyQt5 实现百度图片下载器GUI界面

本文主要介绍了通过 Pyqt5 实现一个界面化的下载器,在通过网络请求实现各种类型的图片的下载。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

通过 Pyqt5 实现一个界面化的下载器,在通过网络请求实现各种类型的图片的下载。可以通过界面上输入不同图片的关键字从而实现下载图片并将下载好的图片保存到自定义的文件路径中。

在介绍代码块内容之前,先来看一下需要用到的三方的 python 库。

1
2
3
4
5
6
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import os
 
from scripy_images import ScripyImages

那么剩下的两个操作库一个是 os 模块主要是用来做系统文件相关操作的,还有一个就是 scripy_images 模块是用来通过网络请求来获取和下载图片的。

接下来介绍 Pyqt5 相关的页面定义等函数的使用。同样的先在 Pyqt5 的窗口上面添加我们需要的需要的组件,最后通过将这些组件添加到布局里面,大概的实现过程就是遵循这个顺序来实现的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def init_ui(self):
      self.setWindowTitle('百度图片提取应用')
 
      grid = QGridLayout()
 
      self.page_label = QLabel()
      self.page_label.setText('设置爬取页数:')
      self.page_line_text = QLineEdit()
      self.page_line_text.setPlaceholderText('输入整数')
      self.page_line_text.setValidator(QIntValidator(1, 99))
      self.page_line_text.setFocus()
 
      self.keyword_label = QLabel()
      self.keyword_label.setText('设置图关键字:')
      self.keyword_line_text = QLineEdit()
      self.keyword_line_text.setValidator(QRegExpValidator(QRegExp('[\u4E00-\u9FA5]+')))
      self.keyword_line_text.setMaxLength(6)
      self.keyword_line_text.setPlaceholderText('输入汉字')
 
      self.file_path = QLineEdit()
      self.file_path.setPlaceholderText('自定义文件路径')
      self.file_path.setReadOnly(True)
      self.file_path_button = QPushButton()
      self.file_path_button.setText('自定义路径')
      self.file_path_button.clicked.connect(self.file_path_click)
 
      self.request_button = QPushButton()
      self.request_button.setText('快速开始抓取图片')
      self.request_button.clicked.connect(self.download_image)
 
      self.log_text = QTextEdit()
      self.log_text.setPlaceholderText('抓取进度结果展示...')
      self.log_text.setReadOnly(True)
      self.log_text.setMaximumHeight(100)
 
      self.version_msg_label = QLabel()
      self.version_msg_label.setText('<font color=blue>公众号:[Python 集中营] 发布</font>')
      self.version_msg_label.setAlignment(Qt.AlignCenter)
 
      grid.addWidget(self.page_label, 0, 0, 1, 1)
      grid.addWidget(self.page_line_text, 0, 1, 1, 2)
      grid.addWidget(self.keyword_label, 1, 0, 1, 1)
      grid.addWidget(self.keyword_line_text, 1, 1, 1, 2)
      grid.addWidget(self.file_path, 2, 0, 1, 2)
      grid.addWidget(self.file_path_button, 2, 2, 1, 1)
      grid.addWidget(self.request_button, 3, 0, 1, 3)
      grid.addWidget(self.log_text, 4, 0, 1, 3)
      grid.addWidget(self.version_msg_label, 5, 0, 1, 3)
 
      self.setLayout(grid)


再接着就是定义相应的槽函数,其中有两个槽函数的使用一个是实在定义文件的存储的路径时需要一个槽函数用来将获取文件路径。还有一个就是开始进行百度图片的下载过程,通过这个槽函数来调用下载模块的执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def file_path_click(self):
     self.cwd = os.getcwd()
     directory = QFileDialog.getExistingDirectory(self, '选取文件夹', self.cwd)
     print(directory)
     self.file_path.setText(directory + '/')
 
 def download_image(self):
     check_param = False
     self.log_text.setText("")
     self.log_text.insertPlainText("-----开始必填项参数检查-----\n")
     if self.page_line_text.text().strip() != '' and \
             self.keyword_line_text.text().strip() != '' and \
             self.file_path.text().strip() != '':
         self.log_text.insertPlainText("---参数检查成功---\n")
         check_param = True
     else:
         self.log_text.insertPlainText("---参数检查失败---\n")
         self.log_text.insertPlainText("请填写必填项后继续...\n")
         check_param = False
     self.log_text.insertPlainText("-----结束必填项参数检查-----\n")
 
     if check_param is True:
         self.log_text.insertPlainText("-----开始下载百度图片-----\n")
         self.log_text.insertPlainText("---请耐心等待---\n")
         ScripyImages(page_num=self.page_line_text.text(),current=self.keyword_line_text.text(),file_path=self.file_path.text())
         self.log_text.insertPlainText("-----结束下载百度图片-----\n")

接着就是调用主函数执行整个逻辑。

1
2
3
4
5
if __name__ == '__main__':
   app = QApplication(sys.argv)
   baidu = baiduImage()
   baidu.show()
   sys.exit(app.exec_())

整个 Pyqt5 的调用执行过程就是这样的 

到此这篇关于PyQt5 实现百度图片下载器GUI界面的文章就介绍到这了

原文链接:https://www.cnblogs.com/lwsbc/p/15708591.html

     伪原创工具 SEO网站优化  https://www.237it.com/ 


    文章分类
    百科问答
    版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
    相关推荐