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

Python自動化之實現(xiàn)桌面壁紙下載器

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

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

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

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

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

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

其中第三方的非標(biāo)準(zhǔn)庫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)來。

#?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)建一個python類WallPaperUI作為GUI布局相關(guān)的操作,將UI布局或使用到的組件全部放到這個類中來開發(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('批量桌面壁紙下載器??公眾號:Python 集中營')
????????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界面就出來了,可以看看界面效果如下。

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

創(chuàng)建一個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)錯誤:保存路徑不能為空!')
????????????????return

????????????if?set_dwonload_num_in?==?'':
????????????????self.message.emit('出現(xiàn)錯誤:下載數(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í)行錯誤,請檢查參數(shù)項是否設(shè)置正確!')
????????????self.finished.emit(True)

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

接下來使用python模塊的mian函數(shù)調(diào)起整個應(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_())

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

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

相關(guān)文章

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

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

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

    python中列表的切片與修改知識點總結(jié)

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

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

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

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

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

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

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

    Pytorch之tensorboard無法啟動和顯示問題及解決

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

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

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

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

    這篇文章主要介紹了python中.format()方法使用詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    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í)題,無論學(xué)習(xí)什么語言,練習(xí)都是必不可少的,下面文章的練習(xí)題挺精湛的,需要的朋友可以參考一下
    2021-11-11
  • Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法

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

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

最新評論