欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)站上的壁紙分類(lèi)主要有美圖、動(dòng)漫、今日熱圖、壁紙等等類(lèi)型的高清圖片供我們下載。

若是喜歡其中的一些壁紙我們可以手動(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è)面爬蟲(chóng):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類(lèi)WallPaperUI作為GUI布局相關(guān)的操作,將UI布局或使用到的組件全部放到這個(gè)類(lèi)中來(lái)開(kā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)可以開(kāi)發(fā)下載壁紙的業(yè)務(wù)過(guò)程了,為了避免影響頁(yè)面主線程的執(zhí)行過(guò)程,我們特意使用QThread的子線程來(lái)開(kāi)發(fā)業(yè)務(wù)過(guò)程。

創(chuàng)建一個(gè)python類(lèi)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)

至此,在子線程類(lèi)DownloadWork中的壁紙下載業(yè)務(wù)就開(kāi)發(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中requests模塊的請(qǐng)求參數(shù)詳解

    Python中requests模塊的請(qǐng)求參數(shù)詳解

    這篇文章主要介紹了Python中requests模塊的請(qǐng)求參數(shù)詳解,requests模塊是一個(gè)網(wǎng)絡(luò)請(qǐng)求模塊,可以幫助我們模擬成客戶(hù)端去請(qǐng)求服務(wù)器的數(shù)據(jù),我們今天就是主要針對(duì)這個(gè)模塊進(jìn)行學(xué)習(xí),需要的朋友可以參考下
    2023-08-08
  • python中列表的切片與修改知識(shí)點(diǎn)總結(jié)

    python中列表的切片與修改知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家分享了關(guān)于python中列表的切片與修改的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-07-07
  • python腳本設(shè)置超時(shí)機(jī)制系統(tǒng)時(shí)間的方法

    python腳本設(shè)置超時(shí)機(jī)制系統(tǒng)時(shí)間的方法

    這篇文章主要介紹了python腳本設(shè)置超時(shí)機(jī)制系統(tǒng)時(shí)間的方法,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Python numpy.add函數(shù)的具體使用

    Python numpy.add函數(shù)的具體使用

    本文主要介紹了Python numpy.add函數(shù)的具體使用,numpy.add函數(shù)不僅僅是一個(gè)簡(jiǎn)單的加法操作,更是一個(gè)功能強(qiáng)大且高度優(yōu)化的工具,可適用于各種復(fù)雜的數(shù)值計(jì)算和數(shù)據(jù)處理任務(wù),感興趣的可以了解一下
    2023-12-12
  • python發(fā)送告警郵件腳本

    python發(fā)送告警郵件腳本

    這篇文章主要介紹了python發(fā)送告警郵件腳本的配置方法,zabbix通過(guò)python腳本發(fā)告警郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Pytorch之tensorboard無(wú)法啟動(dòng)和顯示問(wèn)題及解決

    Pytorch之tensorboard無(wú)法啟動(dòng)和顯示問(wèn)題及解決

    這篇文章主要介紹了Pytorch之tensorboard無(wú)法啟動(dòng)和顯示問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python處理Excel的14個(gè)常用操作總結(jié)

    Python處理Excel的14個(gè)常用操作總結(jié)

    在數(shù)據(jù)處理和分析的領(lǐng)域中,Excel是一種被廣泛使用的工具,然而,通過(guò)Python處理Excel,能夠更好地實(shí)現(xiàn)自動(dòng)化和批量處理,本文為大家整理了14個(gè)Python處理Excel的常用操作,希望對(duì)大家有所幫助
    2023-12-12
  • python中.format()方法使用詳解

    python中.format()方法使用詳解

    這篇文章主要介紹了python中.format()方法使用詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • 5道關(guān)于python基礎(chǔ) while循環(huán)練習(xí)題

    5道關(guān)于python基礎(chǔ) while循環(huán)練習(xí)題

    這篇文章主要給大家分享的是5道關(guān)于python基礎(chǔ) while循環(huán)練習(xí)題,無(wú)論學(xué)習(xí)什么語(yǔ)言,練習(xí)都是必不可少的,下面文章的練習(xí)題挺精湛的,需要的朋友可以參考一下
    2021-11-11
  • Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法

    Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法

    今天小編就為大家分享一篇Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論