最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python自動(dòng)化之實(shí)現(xiàn)桌面壁紙下載器

 更新時(shí)間:2022年11月22日 09:11:58   作者:Sir 老王  
隨著計(jì)算機(jī)性能的提升,人們對(duì)計(jì)算機(jī)個(gè)性化的要求也越來(lái)越高了,自己使用的計(jì)算機(jī)當(dāng)然要設(shè)置成自己喜歡的風(fēng)格!本文就來(lái)用Python做個(gè)桌面壁紙下載器,需要的可以參考一下

隨著計(jì)算機(jī)性能的提升,人們對(duì)計(jì)算機(jī)個(gè)性化的要求也越來(lái)越高了,自己使用的計(jì)算機(jī)當(dāng)然要設(shè)置成自己喜歡的風(fēng)格!

網(wǎng)站上的壁紙分類主要有美圖、動(dòng)漫、今日熱圖、壁紙等等類型的高清圖片供我們下載。

若是喜歡其中的一些壁紙我們可以手動(dòng)進(jìn)行下載,但是對(duì)于熱衷于python的我們當(dāng)然要實(shí)現(xiàn)懶人操作-自動(dòng)化批量下載。

于是就有了接下來(lái)的這個(gè)批量桌面壁紙下載器,首先將使用到的技術(shù)棧全部列舉出來(lái)供大佬們參考。

  • 操作系統(tǒng):windows7
  • GUI工具:PyQt5
  • 頁(yè)面爬蟲:requests
  • 系統(tǒng)文件操作庫(kù):os

其中第三方的非標(biāo)準(zhǔn)庫(kù)PyQt5、requests需要我們使用pip的方式安裝一下。

pip?install?requests?-i?https://pypi.tuna.tsinghua.edu.cn/simple/

pip?install?PyQt5?-i?https://pypi.tuna.tsinghua.edu.cn/simple/

將代碼塊中需要的相關(guān)python模塊全部導(dǎo)入進(jìn)來(lái)。

#?It's?importing?the?traceback?module.
import?traceback

#?Importing?all?the?classes?from?the?QtWidgets?module.
from?PyQt5.QtWidgets?import?*

#?Importing?all?the?classes?from?the?QtCore?module.
from?PyQt5.QtCore?import?*

#?Importing?all?the?classes?from?the?QtGui?module.
from?PyQt5.QtGui?import?*

#?It's?importing?the?requests?module.
import?requests

#?It's?importing?the?os?module.
import?os

#?It's?importing?the?sys?module.
import?sys

完成了上述的準(zhǔn)備工作之后,我們創(chuàng)建一個(gè)python類WallPaperUI作為GUI布局相關(guān)的操作,將UI布局或使用到的組件全部放到這個(gè)類中來(lái)開發(fā)。

class?WallPaperUI(QWidget):
????def?__init__(self):
????????"""
????????A?constructor.?It?is?called?when?an?object?is?created?from?a?class?and?it?allows?the?class?to?initialize?the
????????attributes?of?a?class.
????????"""
????????super(WallPaperUI,?self).__init__()
????????self.init_ui()

????def?init_ui(self):
????????"""
????????This?function?initializes?the?UI.
????????"""
????????self.setWindowTitle('批量桌面壁紙下載器??公眾號(hào):Python 集中營(yíng)')
????????self.setWindowIcon(QIcon('download.ico'))
????????self.resize(500,?200)

????????self.save_dir_path?=?QLineEdit()
????????self.save_dir_path.setPlaceholderText('桌面壁紙保存路徑')

????????self.save_dir_btn?=?QPushButton()
????????self.save_dir_btn.setText('保存路徑')
????????self.save_dir_btn.clicked.connect(self.save_dir_btn_click)

????????self.set_dwonload_num_label?=?QLabel()
????????self.set_dwonload_num_label.setText('設(shè)置下載數(shù)量:')

????????self.set_dwonload_num_in?=?QLineEdit()
????????self.set_dwonload_num_in.setPlaceholderText('例如:10')

????????self.start_btn?=?QPushButton()
????????self.start_btn.setText('立即下載')
????????self.start_btn.clicked.connect(self.start_btn_click)

????????self.brower?=?QTextBrowser()
????????self.brower.setReadOnly(True)
????????self.brower.setFont(QFont('宋體',?8))
????????self.brower.setPlaceholderText('處理進(jìn)程展示區(qū)域...')
????????self.brower.ensureCursorVisible()

????????hbox?=?QHBoxLayout()

????????left_box?=?QVBoxLayout()
????????left_box.addWidget(self.brower)

????????right_box?=?QVBoxLayout()

????????right_form_box?=?QFormLayout()
????????right_form_box.addRow(self.save_dir_path,?self.save_dir_btn)
????????right_form_box.addRow(self.set_dwonload_num_label,?self.set_dwonload_num_in)

????????right_h_box?=?QHBoxLayout()
????????right_h_box.addWidget(self.start_btn)

????????right_box.addLayout(right_form_box)
????????right_box.addLayout(right_h_box)

????????hbox.addLayout(left_box)
????????hbox.addLayout(right_box)

????????self.download_thread?=?DownloadWork(self)
????????self.download_thread.finished.connect(self.finished)
????????self.download_thread.message.connect(self.show_message)

????????self.setLayout(hbox)

????def?show_message(self,?text):
????????cursor?=?self.brower.textCursor()
????????cursor.movePosition(QTextCursor.End)
????????self.brower.append(text)
????????self.brower.setTextCursor(cursor)
????????self.brower.ensureCursorVisible()

????def?save_dir_btn_click(self):
????????directory?=?QFileDialog.getExistingDirectory(self,?'選擇文件夾',?os.getcwd())
????????self.save_dir_path.setText(directory)

????def?start_btn_click(self):
????????self.start_btn.setEnabled(False)
????????self.download_thread.start()

????def?finished(self,?finished):
????????if?finished?is?True:
????????????self.start_btn.setEnabled(True)

完成上面的界面組件布局以后GUI界面就出來(lái)了,可以看看界面效果如下。

接下來(lái)可以開發(fā)下載壁紙的業(yè)務(wù)過(guò)程了,為了避免影響頁(yè)面主線程的執(zhí)行過(guò)程,我們特意使用QThread的子線程來(lái)開發(fā)業(yè)務(wù)過(guò)程。

創(chuàng)建一個(gè)python類DownloadWork繼承自QThread子線程。

class?DownloadWork(QThread):
????finished?=?pyqtSignal(bool)
????message?=?pyqtSignal(str)

????def?__init__(self,?parent=None):
????????super(DownloadWork,?self).__init__(parent)
????????self.working?=?True
????????self.parent?=?parent

????def?__del__(self):
????????self.working?=?False

????def?run(self)?->?None:
????????try:
????????????save_dir_path?=?self.parent.save_dir_path.text().strip()
????????????set_dwonload_num_in?=?self.parent.set_dwonload_num_in.text().strip()

????????????self.message.emit('保存路徑:{}'.format(save_dir_path))
????????????self.message.emit('下載數(shù)量:{}'.format(set_dwonload_num_in))

????????????if?save_dir_path?==?'':
????????????????self.message.emit('出現(xiàn)錯(cuò)誤:保存路徑不能為空!')
????????????????return

????????????if?set_dwonload_num_in?==?'':
????????????????self.message.emit('出現(xiàn)錯(cuò)誤:下載數(shù)量不能為空!')
????????????????return

????????????for?n?in?range(int(set_dwonload_num_in)):
????????????????pic_url?=?f"http://bingw.jasonzeng.dev?resolution=UHD&index={n}"
????????????????self.message.emit('正在下載第{0}張壁紙!'.format(str(n)))
????????????????with?requests.get(pic_url)?as?r:
????????????????????with?open(os.path.join(save_dir_path,?str(n)?+?'.jpg'),?"wb")?as?w:
????????????????????????w.write(r.content)
????????????self.message.emit('全部壁紙下載完成!')
????????????self.finished.emit(True)
????????except:
????????????traceback.print_exc()
????????????self.message.emit('執(zhí)行錯(cuò)誤,請(qǐng)檢查參數(shù)項(xiàng)是否設(shè)置正確!')
????????????self.finished.emit(True)

至此,在子線程類DownloadWork中的壁紙下載業(yè)務(wù)就開發(fā)完了。

接下來(lái)使用python模塊的mian函數(shù)調(diào)起整個(gè)應(yīng)用就大功告成了。

#?A?special?variable?in?Python?that?evaluates?to?True?if?the?module?is?being?run?as?the?main?program.
if?__name__?==?'__main__':
????app?=?QApplication(sys.argv)
????main?=?WallPaperUI()
????main.show()
????sys.exit(app.exec_())

最后啟動(dòng)應(yīng)用,設(shè)置好文件保存路徑,設(shè)置下載10張桌面壁紙看看效果如何?

到此這篇關(guān)于Python自動(dòng)化之實(shí)現(xiàn)桌面壁紙下載器的文章就介紹到這了,更多相關(guān)Python桌面壁紙下載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python完美還原超級(jí)瑪麗游戲附代碼與視頻

    Python完美還原超級(jí)瑪麗游戲附代碼與視頻

    讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python實(shí)現(xiàn)超級(jí)瑪麗,90后的回憶老游戲,快來(lái)看戴帽子的大胡子穿著背帶褲的馬里奧
    2021-11-11
  • Python批量合并有合并單元格的Excel文件詳解

    Python批量合并有合并單元格的Excel文件詳解

    經(jīng)常使用Excel的用戶都知道,合并單元格的存在,這篇文章主要給大家介紹了關(guān)于利用Python如何批量合并有合并單元格的Excel文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2018-04-04
  • 利用Python中的mock庫(kù)對(duì)Python代碼進(jìn)行模擬測(cè)試

    利用Python中的mock庫(kù)對(duì)Python代碼進(jìn)行模擬測(cè)試

    這篇文章主要介紹了利用Python中的mock庫(kù)對(duì)Python代碼進(jìn)行模擬測(cè)試,mock庫(kù)自從Python3.3依賴成為了Python的內(nèi)置庫(kù),本文也等于介紹了該庫(kù)的用法,需要的朋友可以參考下
    2015-04-04
  • tensorflow創(chuàng)建變量以及根據(jù)名稱查找變量

    tensorflow創(chuàng)建變量以及根據(jù)名稱查找變量

    這篇文章主要為大家詳細(xì)介紹了tensorflow創(chuàng)建變量以及根據(jù)名稱查找變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • TF-IDF的算法原理以及Python實(shí)現(xiàn)過(guò)程

    TF-IDF的算法原理以及Python實(shí)現(xiàn)過(guò)程

    這篇文章主要介紹了TF-IDF的算法原理以及Python實(shí)現(xiàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2018-01-01
  • Python調(diào)用ChatGPT制作基于Tkinter的桌面時(shí)鐘

    Python調(diào)用ChatGPT制作基于Tkinter的桌面時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了Python如何調(diào)用ChatGPT制作基于Tkinter的桌面時(shí)鐘,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-03-03
  • python2.7 mayavi 安裝圖文教程(推薦)

    python2.7 mayavi 安裝圖文教程(推薦)

    下面小編就為大家?guī)?lái)一篇python2.7 mayavi 安裝圖文教程(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 全面解讀Python Web開發(fā)框架Django

    全面解讀Python Web開發(fā)框架Django

    Django是一個(gè)開源的Web應(yīng)用框架,由Python寫成。采用MVC的軟件設(shè)計(jì)模式,主要目標(biāo)是使得開發(fā)復(fù)雜的、數(shù)據(jù)庫(kù)驅(qū)動(dòng)的網(wǎng)站變得簡(jiǎn)單。Django注重組件的重用性和“可插拔性”,敏捷開發(fā)和DRY法則(Don’t Repeat Yoursef)。
    2014-06-06
  • Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn安裝與基本使用教程

    Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn安裝與基本使用教程

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn安裝與基本使用,較為詳細(xì)的介紹了機(jī)器學(xué)習(xí)庫(kù)scikit-learn的功能、原理、基本安裝與簡(jiǎn)單使用方法,需要的朋友可以參考下
    2018-06-06
  • 正確理解python迭代器與生成器

    正確理解python迭代器與生成器

    在Python這門語(yǔ)言中,生成器毫無(wú)疑問(wèn)是最有用的特性之一。與此同時(shí),也是使用的最不廣泛的Python特性之一。究其原因,主要是因?yàn)?,在其他主流語(yǔ)言里面沒(méi)有生成器的概念。本文將詳細(xì)介紹python迭代器與生成器
    2021-06-06

最新評(píng)論

惠东县| 保康县| 宁都县| 屏南县| 盐池县| 朝阳区| 江源县| 共和县| 观塘区| 沈丘县| 东安县| 新津县| 阿克陶县| 青田县| 三明市| 绥中县| 宣威市| 丘北县| 岳阳县| 东乌珠穆沁旗| 前郭尔| 兖州市| 岑溪市| 大姚县| 来安县| 方山县| 霍邱县| 蓬莱市| 石楼县| 双鸭山市| 米泉市| 房产| 昌黎县| 沙湾县| 象州县| 平乡县| 阳谷县| 蕉岭县| 察哈| 井陉县| 新巴尔虎左旗|